summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/tkz-euclide
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-01-24 21:43:02 +0000
committerKarl Berry <karl@freefriends.org>2020-01-24 21:43:02 +0000
commit4ce6f5f9c360b21c85e05cf51a20445a33aba4cc (patch)
tree7568e73fee89da48bc1ac9a383219336a4f23160 /Master/texmf-dist/tex/latex/tkz-euclide
parentd5adeaeb325c83b945dd89cac45b12a7410fd32d (diff)
tkz-euclide (24jan20)
git-svn-id: svn://tug.org/texlive/trunk@53531 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/tkz-euclide')
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty21
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-symbols.tex108
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-addpoints.tex159
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-angles.tex332
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-arcs.tex272
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-circles.tex259
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-angles.tex289
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-arcs.tex167
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles.tex237
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-compass.tex105
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-circles.tex251
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-lines.tex425
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-polygons.tex83
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lines.tex207
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex402
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex114
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-with.tex248
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points.tex465
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-polygons.tex113
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-protractor.tex (renamed from Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-protractor.tex)135
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-sectors.tex (renamed from Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-sectors.tex)79
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-show.tex344
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-triangles.tex509
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lines.tex342
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-polygons.tex278
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-vectors.tex119
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-angles.tex65
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-intersections.tex359
-rw-r--r--Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-transformations.tex525
29 files changed, 4261 insertions, 2751 deletions
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty
index 29111bf7c4c..9a611c9943f 100644
--- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-euclide.sty
@@ -1,20 +1,23 @@
+% tkz-euclide.sty
% Copyright 2011 by Alain Matthes
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Public License.
-%<--------------------------------------------------------------------------–>
+%<------------------------------------------------------------–>
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+\typeout{2020/01/23 3.01c tkz-euclide.sty}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{tkz-euclide}[2011/06/01 1.16 c for plots 2d ]
+\ProvidesPackage{tkz-euclide}[2020/01/23 3.01c for euclidan geometry ]
\RequirePackage{tkz-base}
-%<--------------------------------------------------------------------------–>
+\DeclareOption*{}%% Ne rien faire quand une option est inconnue
+\ProcessOptions
+%<----------------------------------------------------------–>
% Initialisation
-%<--------------------------------------------------------------------------–>
+%<----------------------------------------------------------–>
\input{tkz-tools-intersections}
-\input{tkz-tools-transformations}
-\input{tkz-obj-lines}
-\input{tkz-lib-symbols}
-\input{tkz-obj-circles}
-\input{tkz-obj-addpoints}
+\input{tkz-tools-angles}
+\usetkzobj{eu-angles,eu-arcs,eu-compass,eu-circles,eu-draw-circles,eu-lines,eu-draw-lines,eu-points,eu-points-by,eu-points-rnd,eu-points-with,eu-draw-polygons,eu-polygons,eu-protractor,eu-sectors,eu-show,eu-triangles}
\endinput
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-symbols.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-symbols.tex
deleted file mode 100644
index bb8e29f8fad..00000000000
--- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-lib-symbols.tex
+++ /dev/null
@@ -1,108 +0,0 @@
-% Copyright 2011 by Alain Matthes
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-
-
-\def\fileversion{1.16 c}
-\def\filedate{2011/06/01}
-
-
-%<--------------------------------------------------------------------------–>
-% Création des symboles
-%<--------------------------------------------------------------------------–>
-\def\tkz@undefined{none}
-% double bar
-\pgfdeclareplotmark{||}
-{%
- \pgfpathmoveto{\pgfqpoint{2\pgflinewidth}{\pgfplotmarksize}}
- \pgfpathlineto{\pgfqpoint{2\pgflinewidth}{-\pgfplotmarksize}}
- \pgfpathmoveto{\pgfqpoint{-2\pgflinewidth}{\pgfplotmarksize}}
- \pgfpathlineto{\pgfqpoint{-2\pgflinewidth}{-\pgfplotmarksize}}
- \pgfusepathqstroke
-}
-%triple bar
-\pgfdeclareplotmark{|||}
-{%
- \pgfpathmoveto{\pgfqpoint{0 pt}{\pgfplotmarksize}}
- \pgfpathlineto{\pgfqpoint{0 pt}{-\pgfplotmarksize}}
- \pgfpathmoveto{\pgfqpoint{-3\pgflinewidth}{\pgfplotmarksize}}
- \pgfpathlineto{\pgfqpoint{-3\pgflinewidth}{-\pgfplotmarksize}}
- \pgfpathmoveto{\pgfqpoint{3\pgflinewidth}{\pgfplotmarksize}}
- \pgfpathlineto{\pgfqpoint{3\pgflinewidth}{-\pgfplotmarksize}}
- \pgfusepathqstroke
-}
-% An bar slant
-
-\pgfdeclareplotmark{s|}
-{%
- \pgfpathmoveto{\pgfqpoint{-.70710678\pgfplotmarksize}%
- {-.70710678\pgfplotmarksize}}
- \pgfpathlineto{\pgfqpoint{.70710678\pgfplotmarksize}%
- {.70710678\pgfplotmarksize}}
- \pgfusepathqstroke
-}
-
-% An double bar slant
-
-\pgfdeclareplotmark{s||}
-{%
- \pgfpathmoveto{\pgfqpoint{-0.75\pgfplotmarksize}{-\pgfplotmarksize}}
- \pgfpathlineto{\pgfqpoint{0.25\pgfplotmarksize}{\pgfplotmarksize}}
- \pgfpathmoveto{\pgfqpoint{0\pgfplotmarksize}{-\pgfplotmarksize}}
- \pgfpathlineto{\pgfqpoint{1\pgfplotmarksize}{\pgfplotmarksize}}
- \pgfusepathqstroke
-}
-
-% z
-\pgfdeclareplotmark{z}
-{%
- \pgfpathmoveto{\pgfqpoint{0.75\pgfplotmarksize}{-\pgfplotmarksize}}
- \pgfpathlineto{\pgfqpoint{-0.75\pgfplotmarksize}{-\pgfplotmarksize}}
- \pgfpathlineto{\pgfqpoint{0.75\pgfplotmarksize}{\pgfplotmarksize}}
- \pgfpathlineto{\pgfqpoint{-0.75\pgfplotmarksize}{\pgfplotmarksize}}
- \pgfusepathqstroke
-}
-% s
-\pgfdeclareplotmark{s}
-{%
- \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{0pt}{0pt}}
- {\pgfpoint{-\pgfplotmarksize}{\pgfplotmarksize}}
- {\pgfpoint{\pgfplotmarksize}{\pgfplotmarksize}}
- \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{0pt}{0pt}}
- {\pgfpoint{\pgfplotmarksize}{-\pgfplotmarksize}}
- {\pgfpoint{-\pgfplotmarksize}{-\pgfplotmarksize}}
- \pgfusepathqstroke
-}
-% infinity
-\pgfdeclareplotmark{oo}
-{%
- \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{0pt}{0pt}}
- {\pgfpoint{.5\pgfplotmarksize}{1\pgfplotmarksize}}
- {\pgfpoint{\pgfplotmarksize}{0pt}}
- \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{0pt}{0pt}}
- {\pgfpoint{-.5\pgfplotmarksize}{1\pgfplotmarksize}}
- {\pgfpoint{-\pgfplotmarksize}{0pt}}
- \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{0pt}{0pt}}
- {\pgfpoint{.5\pgfplotmarksize}{-1\pgfplotmarksize}}
- {\pgfpoint{\pgfplotmarksize}{0pt}}
- \pgfpathmoveto{\pgfqpoint{0pt}{0pt}}
- \pgfpathcurveto
- {\pgfpoint{0pt}{0pt}}
- {\pgfpoint{-.5\pgfplotmarksize}{-1\pgfplotmarksize}}
- {\pgfpoint{-\pgfplotmarksize}{0pt}}
- \pgfusepathqstroke
-}
-\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-addpoints.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-addpoints.tex
deleted file mode 100644
index 529040ecaf6..00000000000
--- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-addpoints.tex
+++ /dev/null
@@ -1,159 +0,0 @@
-% Copyright 2011 by Alain Matthes
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-
-
-\def\fileversion{1.16 c}
-\def\filedate{2011/06/01}
-
-
-%<--------------------------------------------------------------------------–>
-% Specific points
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-% barycentre
-%<--------------------------------------------------------------------------–>
-\def\tkzDefBarycentricPoint(#1){%
- \path[coordinate] (barycentric cs:#1) coordinate (tkzPointResult);
-}
-\let\tkzDefBCPoint\tkzDefBarycentricPoint
-%<--------------------------------------------------------------------------–>
-% milieu de deux points %<--------------------------------------------------------------------------–>
-% possible \coordinate (#3) at ($(#1)!0.5!(#2)$);
-%<--------------------------------------------------------------------------–>
-\def\tkzDefMidPoint(#1,#2){\path (#1) -- (#2) coordinate[pos=.5](tkzPointResult);}%
-%<--------------------------------------------------------------------------–>
-
-%<--------------------------------------------------------------------------–>
-% OrthoCenter
-%<--------------------------------------------------------------------------–>
-\def\tkzOrthoCenter(#1,#2,#3){%
- \begingroup
- \tkzUProjection(#1,#2)(#3)\tkzGetPoint{tkz@oca}
- \tkzUProjection(#1,#3)(#2)\tkzGetPoint{tkz@ocb}
- \tkzInterLL(#2,tkz@ocb)(#3,tkz@oca)
- \endgroup
-}
-%<--------------------------------------------------------------------------–>
-% GravityCenter
-%<--------------------------------------------------------------------------–>
-\def\tkzCentroid(#1,#2,#3){%
- \begingroup
- \tkzDefMidPoint(#3,#2)\tkzGetPoint{tkz@mida}
- \tkzDefMidPoint(#1,#2)\tkzGetPoint{tkz@midb}
- \tkzInterLL(#1,tkz@mida)(#3,tkz@midb)%
- \endgroup
-}
-%<--------------------------------------------------------------------------–>
-% CircumCenter
-%<--------------------------------------------------------------------------–>
-\def\tkzCircumCenter(#1,#2,#3){%
- \begingroup
- \tkzDefMediatorLine(#1,#2)
- \tkzGetPoints{tkz@dir}{tkz@dil}
- \tkzDefMediatorLine(#1,#3)
- \tkzGetPoints{tkz@diir}{tkz@diil}
- \tkzInterLL(tkz@dir,tkz@dil)(tkz@diir,tkz@diil)%
- \endgroup
-}
-%<--------------------------------------------------------------------------–>
-% InCenter
-%<--------------------------------------------------------------------------–>
-\def\tkzInCenter(#1,#2,#3){%
-\begingroup
- \tkzDefBisectorLine(#3,#1,#2) \tkzGetPoint{tkz@ia}
- \tkzDefBisectorLine(#3,#2,#1)\tkzGetPoint{tkz@ib}
- \tkzInterLL(#1,tkz@ia)(#2,tkz@ib)
-\endgroup
-}
-
-%<--------------------------------------------------------------------------–>
-% EulerCenter
-%<--------------------------------------------------------------------------–>
-\def\tkzEulerCenter(#1,#2,#3){%
-\begingroup
- \tkzCircumCenter(#1,#2,#3)
- \tkzGetPoint{tkz@ca}
- \tkzOrthoCenter(#1,#2,#3)
- \tkzGetPoint{tkz@cb}
- \tkzDefMidPoint(tkz@ca,tkz@cb)
- \tkzDrawPoint(tkzPointResult)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Apollonius center
-%<--------------------------------------------------------------------------–>
-\def\tkzApolloniusCenter(#1,#2){%
-\begingroup
- \tkz@VecK[\tkz@koeff/(1+\tkz@koeff)](#1,#2){tkzFirstPointResult}
- \tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#1,#2){tkzSecondPointResult}
- \tkzDefMidPoint(tkzFirstPointResult,tkzSecondPointResult)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Orthogonal center
-%<--------------------------------------------------------------------------–>
-\def\tkzOrthogonalCenter(#1,#2){%
-\begingroup
- \tkz@VecK[\tkz@koeff/(1+\tkz@koeff)](#1,#2){tkzFirstPointResult}
- \tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#1,#2){tkzSecondPointResult}
- \tkzDefMidPoint(tkzFirstPointResult,tkzSecondPointResult)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Internal Similitude center
-%<--------------------------------------------------------------------------–>
-\def\tkzIntSimilitudeCenter(#1,#2)(#3,#4){%
-\begingroup
-\path[coordinate] (barycentric cs:#1=#4,#3=#2) coordinate (tkzPointResult);
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% External Similitude center
-%<--------------------------------------------------------------------------–>
-\def\tkzExtSimilitudeCenter(#1,#2)(#3,#4){%
-\begingroup
- \path[coordinate] (barycentric cs:#1=-#4,#3=#2) coordinate (tkzPointResult);
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% equi points
-%<--------------------------------------------------------------------------–>
-% draw ? show ?
-
-
-\pgfkeys{
- /tkzEquiPt/.cd,
- from/.code = {\def\tkz@frompoint{#1}},
- dist/.code = {\def\tkz@equ@dist{#1}},
- show/.is if = tkz@equi@show,
- show/.default = true,
- /tkzEquiPt/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1,
- /compass/\searchname/.retry=#1,
- /tikz/\searchname/.retry=#1}}
- }
-
-\def\tkzDefEquiPoints{\pgfutil@ifnextchar[{\tkz@DefEquiPoints}{%
- \tkz@DefEquiPoints[]}}
-\def\tkz@DefEquiPoints[#1](#2,#3){%
-\pgfkeys{/tkzEquiPt/.cd,dist = 2,show=false}
-\pgfqkeys{/tkzEquiPt}{#1}
-\begingroup
- \tkzProjection(#2,#3)(\tkz@frompoint){tkzEQpoint}
- \tkzVecKNorm[\tkz@equ@dist](tkzEQpoint,#2){tkzFirstPointResult}
- \tkzVecKNorm[-\tkz@equ@dist](tkzEQpoint,#2){tkzSecondPointResult}
- \iftkz@equi@show
- \tkzCompass[#1](\tkz@frompoint,tkzFirstPointResult)
- \tkzCompass[#1](\tkz@frompoint,tkzSecondPointResult)
- \fi
-\endgroup
-}
-
-\endinput
-
-
-% tkz@equi@show \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-angles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-angles.tex
deleted file mode 100644
index a5acdd76c11..00000000000
--- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-angles.tex
+++ /dev/null
@@ -1,332 +0,0 @@
-% Copyright 2011 by Alain Matthes
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-
-
-\def\fileversion{1.16 c}
-\def\filedate{2011/06/01}
-
- %<-------------------------------------------------------------------------–>
-\def\tkzGetAngle#1{%
-\global\expandafter\edef\csname #1\endcsname{\tkzAngleResult}}
-
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-
-%<--------------------------------------------------------------------------–>
-% Angle
-% Recherche l'angle formé par #1 et #2 par rapport à l'horizontale
-%<--------------------------------------------------------------------------–>
-\def\tkzFindSlopeAngle(#1,#2){%
-\begingroup
-\tkzmathanglebetweenpoints{\pgfpointanchor{#1}{center}}{%
- \pgfpointanchor{#2}{center}}
-\global\let\tkzAngleResult\pgfmathresult
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Angle avec trois nodes
-%<--------------------------------------------------------------------------–>
-\def\tkzFindAngle(#1,#2,#3){%
-\begingroup
- \tkzFindSlopeAngle(#2,#1)\tkzGetAngle{tkz@FirstAngle}
- \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz@SecondAngle}
- \FPadd\tkz@Angle{\tkz@SecondAngle}{-\tkz@FirstAngle}
- \global\let\tkzAngleResult\tkz@Angle
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Find angle
-%<--------------------------------------------------------------------------–>
-\def\tkzGetAngle#1{%
-\global\expandafter\edef\csname #1\endcsname{\tkzAngleResult}}
-
-%<--------------------------------------------------------------------------–>
-% FillAngle
-%<--------------------------------------------------------------------------–>
-\pgfkeys{/tkzFill/.cd,
- size/.code = \global\def\tkz@size{#1},
- /tkzFill/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1,
- /tikz/\searchname/.retry=#1}}}
-%<--------------------------------------------------------------------------–>
-\def\tkzFillAngle{\pgfutil@ifnextchar[{\tkz@FillAngle}{\tkz@FillAngle[]}}
-\def\tkz@FillAngle[#1](#2,#3,#4){%
-\begingroup
-\pgfkeys{tkzFill/.cd,size=0.4 cm}
-\pgfqkeys{/tkzFill}{#1}
-\tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz@dirOne}
-\tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz@dirTwo}
-\pgfmathgreaterthan{\tkz@dirOne}{\tkz@dirTwo}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathsubtract{\tkz@dirOne}{360}
- \edef\tkz@dirOne{\pgfmathresult}%
- \fi
-
- \path[shift = {(#3)},/tkzFill/.cd,#1]%
- (#3) -- (\tkz@dirOne:\tkz@size) arc%
- (\tkz@dirOne:\tkz@dirTwo:\tkz@size)--cycle;
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawArcRAN[#1](#2,#3)(#4,#5){%
- \begingroup
- \pgfmathparse{#4}\edef\tkz@FirstAngle{\pgfmathresult}%
- \pgfmathparse{#5}\edef\tkz@SecondAngle{\pgfmathresult}%
- \pgfmathgreaterthan{\tkz@FirstAngle}{0}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathsubtract{\tkz@FirstAngle}{360}
- \edef\tkz@FirstAngle{\pgfmathresult}%
- \fi
- \else
- \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathadd{\tkz@SecondAngle}{360}
- \edef\tkz@SecondAngle{\pgfmathresult}%
- \fi
- \fi
- \draw[shift = {(#2)},/drawarc/.cd,#1]%
- (\tkz@FirstAngle:#3) arc (\tkz@FirstAngle:\tkz@SecondAngle:#3);
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% \tkzMarkAngle(B, A, C)
-%
-% Marque d'angle
-% arc de cercle (simple/double/triple) et marque d'églité.
-%
-% Par défaut:
-% arc = simple
-% longueur = 1cm (rayon de l'arc)
-% style traits pleins
-% position: 0.5 (position de la marque)
-% mark rien du tout (ignoré si type est utilisé)
-%
-% Paramètres (optionnels)
-% arc : l, ll, lll
-% length : 1cm
-% gap : 2pt
-% style : type de traits
-% type : none, |, ||,|||, z, s, x, o, oo
-% position: 0.5
-% mark : none , |, ||,|||, z, s, x, o, oo mais tous les
-% % symboles de tikz sont permis
-%<--------------------------------------------------------------------------–>
-\edef\tkz@arcsimple{l}
-\edef\tkz@arctriple{lll}
-\edef\tkz@arcdouble{ll}
-\tikzset{lbstyle/.style ={color=\tkz@mainlinecolor}}
-
-\pgfkeys{/tkzmkangle/.cd,
-mark/.code = {\global\def\tkz@mark{#1}},
-size/.code = {\global\def\tkz@size{#1}},
-mkpos/.code = {\global\edef\tkz@mkpos{#1}},
-mksize/.code = {\global\def\tkz@mksize{#1}},
-mkcolor/.code = {\global\def\tkz@mkcolor{#1}},
-label/.code = {\global\def\tkz@mklabel{#1}},
-arc/.code = {\global\def\tkz@arc{#1}},
-dist/.code = {\global\def\tkz@dist{#1}},
-label style/.code = {\tikzset{lbstyle/.append style ={#1}}},
-/tkzmkangle/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1,
- /tikz/\searchname/.retry=#1}
- }
-} \def\tkzMarkAngle{\pgfutil@ifnextchar[{\tkz@MarkAngle}{\tkz@MarkAngle[]}}
-\def\tkz@MarkAngle[#1](#2,#3,#4){%
-\begingroup
-\pgfkeys{tkzmkangle/.cd,
- arc = l,
- size = 1,
- mksize = 4pt,
- mkcolor = \tkz@mainlinecolor,
- mkpos = 0.5,
- mark = none,
- dist = 1,
- label = {}
- }
-
-\pgfqkeys{/tkzmkangle}{#1}
-%<--------------------------------------------------------------------------–>
-\tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz@dirOne}
-\tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz@dirTwo}
-\begin{scope}
- \ifx\tkz@arc\tkz@arcsimple
- \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size)(\tkz@dirOne,\tkz@dirTwo)
- \else
- \ifx\tkz@arc\tkz@arcdouble
- \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size-1.5\pgflinewidth)%
- (\tkz@dirOne,\tkz@dirTwo)
- \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size+1.5\pgflinewidth)%
- (\tkz@dirOne,\tkz@dirTwo)
- \else
- \ifx\tkz@arc\tkz@arctriple
- \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size)(\tkz@dirOne,\tkz@dirTwo)
- \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size-2\pgflinewidth)%
- (\tkz@dirOne,\tkz@dirTwo)
- \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size+2\pgflinewidth)%
- (\tkz@dirOne,\tkz@dirTwo)
- \fi
- \fi
- \fi
-\end{scope}
-\FPeval\labelangle{(\tkz@dirTwo + \tkz@dirOne)/2}
-\tkz@@extractxy{#3}
- \tkz@ax=\pgf@x%
- \tkz@ay=\pgf@y%
-\begin{scope}
- \node[lbstyle,shift={(\tkz@ax,\tkz@ay)}] at (\labelangle:\tkz@dist ){\tkz@mklabel};
-\end{scope}
-
-%<--------------------------------------------------------------------------–>
-% les marques, aucune si mktype = none
-\global\def\tkz@mymark{%
- \pgfsetplotmarksize{\tkz@mksize}
- \pgfuseplotmark{\tkz@mark}
-}
-\begin{scope}[decoration={markings,mark=at position \tkz@mkpos with {\tkz@mymark}}]
- \pgfmathgreaterthan{\tkz@dirOne}{\tkz@dirTwo}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathsubtract{\tkz@dirOne}{360}
- \edef\tkz@dirOne{\pgfmathresult}%
- \fi
- \path [\tkz@mkcolor,postaction={decorate},/tkzmkangle/.cd,#1]%
-(#3)--++(\tkz@dirOne:\tkz@size) arc(\tkz@dirOne:\tkz@dirTwo:\tkz@size)--cycle;
-\end{scope}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-% multiple
-\def\tkz@multiMA#1 #2\@nil{%
- \protected@edef\tkz@temp{
- \noexpand \tkzMarkAngle[\tkz@optma](#1)}\tkz@temp%
- \def\tkz@nextArg{#2}%
- \ifx\tkzutil@empty\tkz@nextArg
- \let\next\@gobble
- \fi
- \next#2\@nil
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzMarkAngles{\pgfutil@ifnextchar[{\tkz@MarkAngles}{\tkz@MarkAngles[]}}
-\def\tkz@MarkAngles[#1](#2){%
-\global\edef\tkz@optma{#1}
- \begingroup
- \let\next\tkz@multiMA
- \next#2 \@nil %
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% % % fin de \tkzMarkAngle
-% %<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-%<------------------------- Label on angle -------------------------------–>
-%<--------------------------------------------------------------------------–>
-\pgfkeys{tkzlabelangle/.cd,
-dist/.code = {\global\def\labeldist{#1}},
-/tkzlabelangle/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1,
- /tikz/\searchname/.retry=#1}
- }
-}
-\def\tkzLabelAngle{\pgfutil@ifnextchar[{\tkz@LabelAngle}{%
- \tkz@LabelAngle[]}}
-\def\tkz@LabelAngle[#1](#2,#3,#4)#5{%
-\begingroup
-\pgfkeys{tkzlabelangle/.cd,
- dist = 1}
-\pgfqkeys{/tkzlabelangle}{#1}
-\tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz@dirOne}
-\tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz@dirTwo}
-\FPeval\labelAngle{( \tkz@dirOne +\tkz@dirTwo)/2}
-\path (#3) --+(\labelAngle:\labeldist) node[/tkzmkangle/.cd,#1] {#5};
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-% multiple labels
-\def\tkz@multiLBA#1 #2\@nil{%
- \protected@edef\tkz@temp{
- \noexpand \tkzLabelAngle[\tkz@optlba](#1){\tkz@labelangle}}\tkz@temp%
- \def\tkz@nextArg{#2}%
- \ifx\tkzutil@empty\tkz@nextArg
- \let\next\@gobble
- \fi
- \next#2\@nil
-}
-% %<--------------------------------------------------------------------------–>
-\def\tkzLabelAngles{\pgfutil@ifnextchar[{\tkz@LabelAngles}{%
- \tkz@LabelAngles[]}}
-\def\tkz@LabelAngles[#1](#2)#3{%
- \global\edef\tkz@optlba{#1}
- \global\def\tkz@labelangle{#3}
- \begingroup
- \let\next\tkz@multiLBA
- \next#2 \@nil %
- \endgroup
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-% Symbole droites perpendiculaires MAUVAIS
-%<--------------------------------------------------------------------------–>
- \pgfkeys{tkzright/.cd,
- size/.code = {\global\def\tkz@ra@size{#1}},
- /tkzright/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1,
- /tikz/\searchname/.retry=#1}
- }
-}
-
-\newcommand*{\tkzMarkRightAngle}[1][]{\tkz@RightAngle[#1]}
-\def\tkz@RightAngle[#1](#2,#3,#4){%
-\begingroup
-\pgfkeys{tkzright/.cd,
- size = .22}
-\pgfqkeys{/tkzright}{#1}
- \tkzpointnormalised{\pgfpointdiff{\pgfpointanchor{#3}{center}}{%
- \pgfpointanchor{#2}{center}}}
- \tkz@ax=\pgf@x\relax%
- \tkz@ay=\pgf@y\relax%
-
- \tkzpointnormalised{\pgfpointdiff{\pgfpointanchor{#3}{center}}{%
- \pgfpointanchor{#4}{center}}}
- \tkz@bx=\pgf@x\relax%
- \tkz@by=\pgf@y\relax%
- \path[]%
- (#3)--++%
- ( 28.45274*\tkz@ra@size\tkz@ax , 28.45274*\tkz@ra@size\tkz@ay)%
- coordinate (tkz@ra1)--++%
- ( 28.45274*\tkz@ra@size\tkz@bx ,28.45274*\tkz@ra@size\tkz@by)
- coordinate (tkz@ra2)--++%
- (-28.45274*\tkz@ra@size\tkz@ax ,-28.45274*\tkz@ra@size\tkz@ay)
- coordinate (tkz@ra3);%
- \draw[/tkzright/.cd,#1] (#3)--(tkz@ra1)--(tkz@ra2)--(tkz@ra3)--cycle;
-\endgroup
-}
-
-\def\tkz@multiRA#1 #2\@nil{%
- \protected@edef\tkz@temp{
- \noexpand \tkzMarkRightAngle[\tkz@optRA](#1)}\tkz@temp%
- \def\tkz@nextArg{#2}%
- \ifx\tkzutil@empty\tkz@nextArg
- \let\next\@gobble
- \fi
- \next#2\@nil
-}
-\def\tkzMarkRightAngles{\pgfutil@ifnextchar[{\tkz@RightAngles}{%
- \tkz@RightAngles[]}}
-\def\tkz@RightAngles[#1](#2){%
-\global\edef\tkz@optRA{#1}
- \begingroup
- \let\next\tkz@multiRA
- \next#2 \@nil %
-\endgroup
-}
-\endinput
- \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-arcs.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-arcs.tex
deleted file mode 100644
index fef8c6e81e1..00000000000
--- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-arcs.tex
+++ /dev/null
@@ -1,272 +0,0 @@
-% Copyright 2011 by Alain Matthes
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-
-
-\def\fileversion{1.16 c}
-\def\filedate{2011/06/01}
-
- %<--------------------------------------------------------------------------–>
-%<------------------------------ Arcs -------------------------------------–>
-%<--------------------------------------------------------------------------–>
-% options : delta
-\def\tkz@delta{0}
-\tikzset{arc style/.style={#1}}
-\pgfkeys{/tikz/.cd,delta/.code={\def\tkz@delta{#1}}}
-
-\global\def\tkz@numa{0}
-\pgfkeys{/drawarc/.cd,
-towards/.code = {\global\def\tkz@numa{0}},
-rotate/.code = {\global\def\tkz@numa{1}},
-angles/.code = {\global\def\tkz@numa{2}},
-R/.code = {\global\def\tkz@numa{3}},
-R with nodes/.code = {\global\def\tkz@numa{4}},
-/drawarc/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1,
- /tikz/\searchname/.retry=#1,%
- /pgf/\searchname/.retry=#1}}
-}
-
-\def\tkzDrawArc{\pgfutil@ifnextchar[{\tkz@DrawArc}{\tkz@DrawArc[]}}
-\def\tkz@DrawArc[#1](#2,#3)(#4){%
-\begingroup
-\pgfkeys{/drawarc/.cd,towards,delta=0}
-\pgfqkeys{/drawarc}{#1}
-\ifcase\tkz@numa%
- \tkzDrawArcN[#1](#2,#3)(#4)
-\or% 1
- \tkzDrawArcRotate[#1](#2,#3)(#4)
-\or% 2
- \tkzDrawArcAngles[#1](#2,#3)(#4)
- \or% 3
- \tkzDrawArcRAngles[#1](#2,#3)(#4)
- \or% 4
- \tkzDrawArcR[#1](#2,#3)(#4)
-\fi
-\endgroup
-}
-
-%<--------------------------------------------------------------------------–>
-% #1 center #2 radius #4 first angle (degree) #5 second angle (degree)
-% angles 0 .. 180 or -180 .. 0
-%<--------------------------------------------------------------------------–>
-% example : \tkzDrawArc(A,2 cm)(30,90)
-\def\tkzDrawArcRAngles{\pgfutil@ifnextchar[{\tkz@DrawArcRAngles}{%
- \tkz@DrawArcRAngles[]}}
-\def\tkz@DrawArcRAngles[#1](#2,#3)(#4,#5){%
- \begingroup
- \pgfmathparse{#4}\edef\tkz@FirstAngle{\pgfmathresult}%
- \pgfmathparse{#5}\edef\tkz@SecondAngle{\pgfmathresult}%
- \pgfmathgreaterthan{\tkz@FirstAngle}{0}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathsubtract{\tkz@FirstAngle}{360}
- \edef\tkz@FirstAngle{\pgfmathresult}%
- \fi
- \else
- \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \pgfmathadd{\tkz@SecondAngle}{360}
- \edef\tkz@SecondAngle{\pgfmathresult}%
- \fi
- \fi
- \pgfmathsubtract{\tkz@FirstAngle}{\tkz@delta}
- \edef\tkz@FirstAngle{\pgfmathresult}%
- \pgfmathadd{\tkz@SecondAngle}{\tkz@delta}
- \edef\tkz@SecondAngle{\pgfmathresult}
- \draw[shift = {(#2)},compass style,/drawarc/.cd,#1]%
- (\tkz@FirstAngle:#3) arc (\tkz@FirstAngle:\tkz@SecondAngle:#3);
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% ARC nodes #2 center #3 first point last point #4
-% delta un peu plus à chaque extrémité
-% example : \tkzDrawArc(A,B)(C)
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawArcN{\pgfutil@ifnextchar[{\tkz@DrawArcN}{\tkz@DrawArcN[]}}
-\def\tkz@DrawArcN[#1](#2,#3)(#4){%
-\begingroup
- \tkzCalcLength(#2,#3)\tkzGetLength{tkz@radius}
- \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz@FirstAngle}
- \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz@SecondAngle}
- \tkz@DrawArcRAngles[#1](#2,\tkz@radius pt)(\tkz@FirstAngle,\tkz@SecondAngle)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% nodes #2 center #3 first point rotate #3 with Angle
-% delta un peu plus à chaque extrémité
-% tkzDrawArcRotate(O,A)(60)
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawArcRotate{\pgfutil@ifnextchar[{\tkz@DrawArcRotate}{%
- \tkz@DrawArcRotate[]}}
-\def\tkz@DrawArcRotate[#1](#2,#3)(#4){%
-\begingroup
- \tkzCalcLength(#2,#3)\tkzGetLength{tkz@radius}
- \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz@FirstA}
- \pgfmathadd{\tkz@FirstA}{#4}
- \edef\tkz@SecondA{\pgfmathresult}
- \pgfmathgreaterthan{#4}{0}
- \ifdim\pgfmathresult pt=1 pt\relax%
- \tkz@DrawArcRAngles[#1](#2,\tkz@radius pt)(\tkz@FirstA,\tkz@SecondA)
- \else
- \tkz@DrawArcRAngles[#1](#2,\tkz@radius pt)(\tkz@SecondA,\tkz@FirstA)
- \fi
- \endgroup
-}
-%<--------------------------------------------------------------------------–>
-% deux angles
-% \tkzDrawArcAngles(O,A)(0,60)
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawArcAngles{\pgfutil@ifnextchar[{\tkz@DrawArcAngles}{%
- \tkz@DrawArcAngles[]}}
-\def\tkz@DrawArcAngles[#1](#2,#3)(#4,#5){%
-\begingroup
- \tkzCalcLength(#2,#3)
- \tkz@DrawArcRAngles[#1](#2,\tkzLengthResult pt)(#4,#5)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Degree #2 center #4 - #3 radius from #5 (degree) to #6(degree)
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawArcRwithNodesAngles{\pgfutil@ifnextchar[{%
- \tkz@DrawArcRwithNodesAngles}{%
- \tkz@DrawArcRwithNodesAngles[]}} \def\tkz@DrawArcRwithNodesAngles[#1](#2,#3,#4)(#5,#6){%
-\begingroup
- \tkzCalcLength(#3,#4)
- \tkz@DrawArcRAngles[#1](#2,\tkzLengthResult pt)(#5,#6)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawArcRwithNodes{\pgfutil@ifnextchar[{\tkz@DrawArcRwithNodes}{%
- \tkz@DrawArcRwithNodes[]}}
-\def\tkz@DrawArcRwithNodes[#1](#2,#3,#4)(#5,#6){%
-\begingroup
- \tkzCalcLength(#3,#4)
- \tkzFindSlopeAngle(#2,#5)\tkzGetAngle{tkz@FirstAngle}
- \tkzFindSlopeAngle(#2,#6)\tkzGetAngle{tkz@SecondAngle}
- \tkz@DrawArcRAngles[#1](#2,\tkzLengthResult)%
- (\tkz@FirstAngle,\tkz@SecondAngle)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Nodes R #2 center #3 radius en cm from #4(node) to #5(node)
-% \tkzDrawArcR(O,2 cm)(A,B)
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawArcR{\pgfutil@ifnextchar[{\tkz@DrawArcR}{\tkz@DrawArcR[]}}
-\def\tkz@DrawArcR[#1](#2,#3)(#4,#5){%
-\begingroup
- \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz@FirstAngle}
- \tkzFindSlopeAngle(#2,#5)\tkzGetAngle{tkz@SecondAngle}
- \tkz@DrawArcRAngles[#1](#2,#3)(\tkz@FirstAngle,\tkz@SecondAngle)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-% Author Alain Matthes
-% idea from Y. Combe %<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-% Utilisation du Compas : Compass
-%<--------------------------------------------------------------------------–>
-% Setup Compass
-%<--------------------------------------------------------------------------–>
-\pgfkeys{%
-setupcompass/.cd,
-line width/.code = {\global\edef\tkz@compass@lw{#1}},
-color/.code = {\global\edef\tkz@compass@color{#1}},
-style/.code = {\global\edef\tkz@compass@style{#1}},
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-\def\tkzSetUpCompass{\pgfutil@ifnextchar[{\tkzActivOff\tkz@SetUpCompass}{%
- \tkzActivOff\tkz@SetUpCompass[]}}
-%<--------------------------------------------------------------------------–>
-\def\tkz@SetUpCompass[#1]{%
-\tkzActivOff
-\pgfkeys{%
-setupcompass/.cd,
-line width = \tkz@euc@compasswidth,
-color = \tkz@euc@compasscolor,
-style = \tkz@euc@compassstyle
-}
-\pgfqkeys{/setupcompass}{#1}
-\tikzset{compass style/.style={color = \tkz@compass@color,
- line width = \tkz@compass@lw,
- style = \tkz@compass@style
- }}
-}
-%<--------------------------------------------------------------------------–>
-% \tkzCompass(A, B)
-%
-% Marque de compas auto-ajustée en longueur
-% #2 center #3 le point
-% Par défaut:
-% longueur : 1cm, mais avec un maximum d'un angle de 180°
-% angle calculé pour la longueur
-% style traits pleins
-%
-% Paramètres (optionnels, gérés par xkeyval)
-% length : longueur de l'arc (ignoré si delta est différent de 0)
-% delta : angle sous-tendant l'arc
-
-%<--------------------------------------------------------------------------–>
- \pgfkeys{
- /compass/delta/.code = {\def\tkz@delta{#1}},
- /compass/length/.code = {\def\tkz@length{#1}},
- /compass/ratio/.code = {\def\tkz@ratio{#1}},
- /compass/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1,
- /tikz/\searchname/.retry=#1}}
-}
-
-% \def\tkz@length{2}
-% \pgfkeys{/tikz/.cd,length/.code={\def\tkz@length{#1}}}
-
-\def\tkzCompass{\pgfutil@ifnextchar[{\tkz@Compass}{\tkz@Compass[]}}
-\def\tkz@Compass[#1](#2,#3){%
-\begingroup
-\pgfkeys{%
- compass/.cd,
- length = 0.75,
- delta = 0,
- ratio = .5
- }
-\pgfkeys{compass/.cd,#1}
- \tkzCalcLength(#2,#3)\tkzGetLength{tkz@tempLen}
-\ifnum\tkz@delta=0 %
- \pgfmathsetmacro{\tkz@delta}{min(deg(\tkz@length cm/ \tkz@tempLen pt),180)/2}
-\fi
- \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz@angle}%
- \draw[shift ={(#2)},/compass/.cd,compass style,#1]%
- (\tkz@angle-\tkz@delta:\tkz@tempLen pt)%
- arc (\tkz@angle-\tkz@delta:\tkz@angle+\tkz@delta:\tkz@tempLen pt);
- %};
-\endgroup}
-%<--------------------------------------------------------------------------–>
-\def\tkz@multiCompass#1 #2\@nil{%
- \protected@edef\tkz@temp{
- \noexpand \tkzCompass[\tkz@optcompass](#1)}\tkz@temp%
- \def\tkz@nextArg{#2}%
- \ifx\tkzutil@empty\tkz@nextArg
- \let\next\@gobble
- \fi
- \next#2\@nil
-}
-\def\tkzCompasss{\pgfutil@ifnextchar[{\tkz@Compasss}{\tkz@Compasss[]}}
-
-\def\tkz@Compasss[#1](#2){%
-\global\edef\tkz@optcompass{#1}
-\begingroup
- \let\next\tkz@multiCompass
- \next#2 \@nil %
-\endgroup
-}%
-
-%<--------------------------------------------------------------------------–>
-% fin de \tkzCompass
-%<--------------------------------------------------------------------------–>\endinput
- \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-circles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-circles.tex
deleted file mode 100644
index c29b965c16e..00000000000
--- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-circles.tex
+++ /dev/null
@@ -1,259 +0,0 @@
-% Copyright 2011 by Alain Matthes
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-
-
-\def\fileversion{1.16 c}
-\def\filedate{2011/06/01}
-
-
-%<--------------------------------------------------------------------------–>
-% tkzCircle center and one point
-%<--------------------------------------------------------------------------–>
-
-\def\tkz@numc{0}
-\pgfkeys{/tkzDefCircle/.cd,
-radius/.code = \def\tkz@numc{0},
-diameter/.code = \def\tkz@numc{1},
-circum/.code = \def\tkz@numc{2},
-in/.code = \def\tkz@numc{3},
-euler/.code = \def\tkz@numc{4},
-apollonius/.code = \def\tkz@numc{5},
-orthogonal from/.code args = {#1}{\global\def\tkz@ptfrom{#1},
- \global\def\tkz@numc{6}},
-orthogonal through/.code args ={#1 and #2}{\global\def\tkz@ptone{#1}
- \global\def\tkz@pttwo{#2}
- \global\def\tkz@numc{7}},
-K/.code = \def\tkz@koeff{#1}
-}
-
-\def\tkzDefCircle{\pgfutil@ifnextchar[{\tkz@DefCircle}{%
- \tkz@DefCircle[]}}
-\def\tkz@DefCircle[#1](#2){%
-\begingroup
-\pgfkeys{/tkzDefCircle/.cd,radius,K=2}
-\pgfqkeys{/tkzDefCircle}{#1}
-\ifcase\tkz@numc%
- \tkzDefCircleRadius(#2)
- \or% 1
- \tkzDefCircleD(#2)
- \or% 2
- \tkzDefCircumCircle(#2)
- \or% 3
- \tkzDefInCircle(#2)
- \or% 4
- \tkzDefEulerCircle(#2)
- \or% 5
- \tkzDefApolloniusCircle(#2)
- \or% 6
- \tkzDefOrthogonalCircle(#2,\tkz@ptfrom)
- \or% 7
- \tkzDefOrthoThroughCircle(#2,\tkz@ptone,\tkz@pttwo) \fi
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDefCircumCircle(#1,#2,#3){%
-\begingroup
- \tkzCircumCenter(#1,#2,#3)
- \tkzCalcLength(#1,tkzPointResult)
-\endgroup
-}
-\def\tkzDefInCircle(#1,#2,#3){%
-\begingroup
- \tkzInCenter(#1,#2,#3) \tkzGetPoint{tkz@ia}
- \tkzUProjection(#2,#3)(tkzPointResult)
- \tkzCalcLength(tkzPointResult,tkz@ia)
- \tkzRenamePoint(tkz@ia){tkzPointResult}
-\endgroup
-}
-\def\tkzDefEulerCircle(#1,#2,#3){%
-\begingroup
- \tkzDefMidPoint(#2,#3) \tkzGetPoint{tkz@e}
- \tkzEulerCenter(#1,#2,#3)
- \tkzCalcLength(tkz@e,tkzPointResult)
-\endgroup
-}
-\def\tkzDefApolloniusCircle(#1,#2){%
-\begingroup
- \tkzApolloniusCenter(#1,#2)
- \tkzCalcLength(tkzPointResult,tkzFirstPointResult)
-\endgroup
-}
-\def\tkzDefOrthogonalCircle(#1,#2,#3){%
-\begingroup
- \tkzTgtFromP(#1,#2)(#3)
- \tkzCalcLength[cm](#1,tkzFirstPointResult)
-\endgroup
-}
-\def\tkzDefOrthoThroughCircle(#1,#2,#3,#4){%
-\begingroup
- \tkzCalcLength[cm](#1,#2)\tkzGetLength{tkz@lna}%
- \tkzCalcLength[cm](#1,#3)\tkzGetLength{tkz@lnb}%
- \FPeval\tkz@lnc{\tkz@lna/\tkz@lnb*\tkz@lna}
- \tkzVecKNorm[\tkz@lnc](#1,#3){tkz@PointResult}
- \tkzCircumCenter(tkz@PointResult,#3,#4)
- \tkzCalcLength(tkzPointResult,#3)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkz@numdc{0}
-\pgfkeys{
-/DrawCircle/.cd,
- radius/.code =\def\tkz@numdc{0},
- R/.code =\def\tkz@numdc{1},
- diameter/.code =\def\tkz@numdc{2},
- circum/.code =\def\tkz@numdc{3},
- in/.code =\def\tkz@numdc{4},
- euler/.code =\def\tkz@numdc{5},
- apollonius/.code =\def\tkz@numdc{6},
- orthogonal from/.code args= {#1}{\global\def\tkz@ptfrom{#1},
- \global\def\tkz@numdc{7}},
- orthogonal through/.code args={#1 and #2}{\global\def\tkz@ptone{#1}
- \global\def\tkz@pttwo{#2}
- \global\def\tkz@numdc{8}},
- K/.code =\def\tkz@koeff{#1},
- /DrawCircle/.unknown/.code ={\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1,
- /tikz/\searchname/.retry=#1}}
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawCircle{\pgfutil@ifnextchar[{\tkz@DrawCircle}{\tkz@DrawCircle[]}}
-\def\tkz@DrawCircle[#1](#2){%
-\begingroup
-\pgfkeys{/DrawCircle/.cd,radius,K=2}
-\pgfqkeys{/DrawCircle}{#1}
-\ifcase\tkz@numdc%
- \tkzDefCircleRadius(#2)
- \or% 1
- \tkzDefCircleR(#2)
- \or% 2
- \tkzDefCircleD(#2)
- \or% 3
- \tkzDefCircumCircle(#2)
- \or% 4
- \tkzDefInCircle(#2)
- \or% 5
- \tkzDefEulerCircle(#2)
- \or% 6
- \tkzDefApolloniusCircle(#2)
- \or% 7
- \tkzDefOrthogonalCircle(#2,\tkz@ptfrom)
- \or% 8
- \tkzDefOrthoThroughCircle(#2,\tkz@ptone,\tkz@pttwo)
- \fi
-\draw[/DrawCircle/.cd,line style,#1]%
- (tkzPointResult) circle (\tkzLengthResult pt);%
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDefCircleRadius(#1,#2){%
-\begingroup
- \tkzCalcLength(#1,#2)
- \tkzRenamePoint(#1){tkzPointResult}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDefCircleR(#1,#2){%
- \begingroup
- \tkz@radi=#2 %
- \FPeval\tkzLengthResult{\pgf@sys@tonumber{\tkz@radi}}%
- \FPround\tkzLengthResult\tkzLengthResult5\relax%
- \global\let\tkzLengthResult\tkzLengthResult
- \tkzRenamePoint(#1){tkzPointResult}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDefCircleD(#1,#2){%
-\begingroup
- \tkzDefMidPoint(#1,#2)
- \tkzCalcLength(#1,tkzPointResult)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-%<---------------------------- Fill Circle --------------------------------–>
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-\def\tkz@numfc{0}
-\pgfkeys{
-/fillcircle/.cd,
- radius/.code =\def\tkz@numfc{0},
- R/.code =\def\tkz@numfc{1},
-/fillcircle/.unknown/.code ={\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1,
- /tikz/\searchname/.retry=#1}}
-}
-
-\def\tkzFillCircle{\pgfutil@ifnextchar[{\tkz@FillCircle}{\tkz@FillCircle[]}}
-\def\tkz@FillCircle[#1](#2,#3){%
-\begingroup
-\pgfkeys{/fillcircle/.cd,radius}
-\pgfqkeys{/fillcircle}{#1}
-\ifcase\tkz@numfc%
- % first case 0
- \tkzCalcLength(#2,#3)
- \fill[/fillcircle/.cd,#1] (#2) circle (\tkzLengthResult pt);%
- \or% 1
- \fill[/fillcircle/.cd,#1] (#2) circle (#3);%
- \fi
-\endgroup
-}
-%<--------------------------- Clip Circle ---------------------------------–>
-% %<--------------------------------------------------------------------------–>
-\def\tkz@numcc{0}
-\pgfkeys{
-/clipcircle/.cd,
- radius/.code =\def\tkz@numcc{0},
- R/.code =\def\tkz@numcc{1}
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzClipCircle{\pgfutil@ifnextchar[{\tkz@ClipCircle}{%
- \tkz@ClipCircle[]}}
-
-\def\tkz@ClipCircle[#1](#2,#3){%
-\pgfkeys{/clipcircle/.cd,radius}
-\pgfqkeys{/clipcircle}{#1}
-\ifcase\tkz@numcc
- \tkzCalcLength(#2,#3)
- \clip (#2) circle (\tkzLengthResult pt);
- \or% 1
- \clip (#2) circle (#3);
- \fi
-}
-%<--------------------------- Label Circle --------------------------------–>
-%<--------------------------------------------------------------------------–>
-% %<--------------------------------------------------------------------------–>
-\def\tkz@numlc{0}
-\pgfkeys{
-/labelcircle/.cd,
- radius/.code =\def\tkz@numlc{0},
- R/.code =\def\tkz@numlc{1},
- /labelcircle/.unknown/.code ={\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1,
- /tikz/\searchname/.retry=#1}}
-}
-
-\def\tkzLabelCircle{\pgfutil@ifnextchar[{\tkz@LabelCircle}{%
- \tkz@LabelCircle[]}}
-
-\def\tkz@LabelCircle[#1](#2,#3)(#4)#5{%
-\begingroup
-\pgfkeys{/labelcircle/.cd,radius}
-\pgfqkeys{/labelcircle}{#1}
-\ifcase\tkz@numlc
- \tkzURotateAngle(#2,#4)(#3)
- \node[/labelcircle/.cd,#1] at (tkzPointResult) {#5};
- \or% 1
- \path (#2)--++(#3,0) coordinate (tkzPointResult);
- \tkzURotateAngle(#2,#4)(tkzPointResult)
- \node[/labelcircle/.cd,#1] at (tkzPointResult) {#5};
- \fi
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-
-\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-angles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-angles.tex
new file mode 100644
index 00000000000..caa19116be5
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-angles.tex
@@ -0,0 +1,289 @@
+% tkz-tool-eu-angles.tex
+% Copyright 2011 by Alain Matthes
+% This file may be distributed and/or modified
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+\typeout{2020/01/23 3.01c tkz-tool-eu-angles.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+\newdimen\tkz@arcsize% from julian julian@d-and-j.net
+\newdimen\tkz@fillsize
+%<-------------------------------------------------------------------------–>
+
+%<--------------------------------------------------------------------------–>
+% tkzDrawArcRAN >
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawArcRAN[#1](#2,#3)(#4,#5){%
+\begingroup
+ \draw[shift = {(#2)},/drawarc/.cd,#1] (#4:#3) arc (#4:#5:#3);
+\endgroup
+}
+%<--------------- tkzPathArcRAN ----------------------------------
+\def\tkzPathArcRAN[#1](#2,#3)(#4,#5){%
+\begingroup
+ \path[shift = {(#2)},/drawarc/.cd,#1] (#4:#3) arc (#4:#5:#3);
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Mark an angle
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% \tkzMarkAngle(B, A, C)
+%
+% Marque d'angle
+% arc de cercle (simple/double/triple) et marque d'églité.
+%
+% Par défaut:
+% arc = simple
+% size = 1cm (rayon de l'arc)
+% style traits pleins
+% mkpos ? position: 0.5 (position de la marque)
+% mark rien du tout (ignoré si type est utilisé)
+%
+% Paramètres (optionnels)
+% arc : l, ll, lll
+% mksize : 1cm
+% gap : 3pt
+% dist ?
+% style : type de traits
+% type : none, |, ||,|||, z, s, x, o, oo
+% position: 0.5
+% mark : none , |, ||,|||, z, s, x, o, oo mais tous les
+% % symboles de tikz sont permis
+%<------------------------- Label on angle -------------------------------–>
+\def\tkz@arcsimple{l}
+\def\tkz@arcdouble{ll}
+\def\tkz@arctriple{lll}
+
+%\tikzset{lbstyle/.style = {color=\tkz@mainlinecolor}}
+
+\pgfkeys{/tkzmkangle/.cd,
+ arc/.estore in = \tkz@arc,
+ size/.store in = \tkz@size,
+ mark/.store in = \tkz@markang,
+ mkpos/.estore in = \tkz@mkpos,
+ mksize/.store in = \tkz@mksize,
+ mkcolor/.store in = \tkz@mkcolor,
+ arc = l,
+ size = 1 cm,
+ mark = |,
+ mksize = 4pt,
+ mkcolor = black,
+ mkpos = 0.5,
+ /tkzmkangle/.search also={/tikz}
+} \def\tkzMarkAngle{\pgfutil@ifnextchar[{\tkz@MarkAngle}{\tkz@MarkAngle[]}}
+\def\tkz@MarkAngle[#1](#2,#3,#4){%
+\begingroup
+\pgfqkeys{/tkzmkangle}{#1}
+
+\tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz@dirOne}
+\tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz@dirTwo}
+\tkzNormalizeAngle(\tkz@dirOne,\tkz@dirTwo)
+
+% les marques, aucune si mktype = none
+\def\tkz@mymark{\pgfsetplotmarksize{\tkz@mksize}\pgfuseplotmark{\tkz@markang}}
+% draw the arcs
+\begin{scope}[decoration= {markings,
+ mark=at position \tkz@mkpos with {\tkz@mymark}}]
+ \ifx\tkz@arc\tkz@arcsimple
+ \tkzDrawArcRAN[#1,fill=none,postaction={decorate}]%
+ (#3,\tkz@size)(\tkz@FirstAngle,\tkz@SecondAngle)
+ \else
+ \ifx\tkz@arc\tkz@arcdouble
+
+ \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size-1.5\pgflinewidth)%
+ (\tkz@FirstAngle,\tkz@SecondAngle)
+ \tkzPathArcRAN[#1,fill=none,postaction={decorate}]%
+ (#3,\tkz@size)(\tkz@FirstAngle,\tkz@SecondAngle)%
+ \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size+1.5\pgflinewidth)%
+ (\tkz@FirstAngle,\tkz@SecondAngle)%
+ \else
+ \ifx\tkz@arc\tkz@arctriple
+ \tkzDrawArcRAN[#1,fill=none,postaction={decorate}]%
+ (#3,\tkz@size)(\tkz@FirstAngle,\tkz@SecondAngle)%
+ \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size-2.5\pgflinewidth)%
+ (\tkz@FirstAngle,\tkz@SecondAngle)%
+ \tkzDrawArcRAN[#1,fill=none](#3,\tkz@size+2.5\pgflinewidth)%
+ (\tkz@FirstAngle,\tkz@SecondAngle)%
+ \fi
+ \fi
+ \fi
+\end{scope}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% multiple
+\def\tkz@multiMA#1 #2\@nil{%
+ \protected@edef\tkz@temp{
+ \noexpand \tkzMarkAngle[\tkz@optma](#1)}\tkz@temp%
+ \def\tkz@nextArg{#2}%
+ \ifx\tkzutil@empty\tkz@nextArg
+ \let\next\@gobble
+ \fi
+ \next#2\@nil
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzMarkAngles{\pgfutil@ifnextchar[{\tkz@MarkAngles}{\tkz@MarkAngles[]}}
+\def\tkz@MarkAngles[#1](#2){%
+\xdef\tkz@optma{#1}
+ \begingroup
+ \let\next\tkz@multiMA
+ \next#2 \@nil %
+\endgroup
+}
+% fin de \tkzMarkAngle
+%<--------------------------------------------------------------------------–>
+% FillAngle
+%<--------------------------------------------------------------------------–>
+\pgfkeys{/tkzFill/.cd,
+ size/.store in = \tkz@size,
+ size = 1 cm,
+ /tkzFill/.search also={/tikz}
+ }
+
+\def\tkzFillAngle{\pgfutil@ifnextchar[{\tkz@FillAngle}{\tkz@FillAngle[]}}
+\def\tkz@FillAngle[#1](#2,#3,#4){%
+\begingroup
+\pgfqkeys{/tkzFill}{#1}
+ \tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz@dirOne}
+ \tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz@dirTwo}
+ \tkzNormalizeAngle(\tkz@dirOne,\tkz@dirTwo)
+ \path[shift = {(#3)},/tkzFill/.cd,#1]%
+ (#3) -- (\tkz@FirstAngle:\tkz@size) arc%
+ (\tkz@FirstAngle:\tkz@SecondAngle:\tkz@size)--cycle;
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% multiple
+\def\tkz@multiFA#1 #2\@nil{\protected@edef\tkz@temp{%
+ \noexpand \tkzFillAngle[\tkz@optfa](#1)}%
+ \tkz@temp%
+ \def\tkz@nextArg{#2}%
+ \ifx\tkzutil@empty\tkz@nextArg
+ \let\next\@gobble
+ \fi
+ \next#2\@nil
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzFillAngles{\pgfutil@ifnextchar[{\tkz@MFillAngles}{\tkz@MFillAngles[]}}
+\def\tkz@MFillAngles[#1](#2){%
+\xdef\tkz@optfa{#1}
+\begingroup
+ \let\next\tkz@multiFA
+ \next#2 \@nil %
+\endgroup
+}
+%<------------------------- Label on angle -------------------------------–>
+\pgfkeys{/tkzlabelangle/.cd,
+ dist/.store in = \tkzlabeldist,
+ angle/.store in = \tkzlabelangle,
+ dist = 1,
+ angle = {},
+ /tkzlabelangle/.search also={/tikz}
+}
+\def\tkzLabelAngle{\pgfutil@ifnextchar[{\tkz@LabelAngle}{\tkz@LabelAngle[]}}
+\def\tkz@LabelAngle[#1](#2,#3,#4)#5{%2016 added normalize from karu's code
+\begingroup
+ \pgfqkeys{/tkzlabelangle}{#1}
+ \ifx\tkzutil@empty\tkzlabelangle% no value so calc angle of bisector
+ \tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz@dirOne}
+ \tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz@dirTwo}
+ \tkzNormalizeAngle(\tkz@dirOne,\tkz@dirTwo)
+ \edef\tkzlabelAngle{\fpeval{(\tkz@SecondAngle+\tkz@FirstAngle)/2}}
+ \fi
+ \path (#3) --+(\tkzlabelAngle:\tkzlabeldist) node[/tkzlabelangle/.cd,#1] {#5};
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% multiple labels
+\def\tkz@multiLBA#1 #2\@nil{%
+ \protected@edef\tkz@temp{
+ \noexpand \tkzLabelAngle[\tkz@optlba](#1){\tkz@labelangle}}\tkz@temp%
+ \def\tkz@nextArg{#2}%
+ \ifx\tkzutil@empty\tkz@nextArg
+ \let\next\@gobble
+ \fi
+ \next#2\@nil
+}
+% %<---------------------------------------------------------------------
+\def\tkzLabelAngles{\pgfutil@ifnextchar[{\tkz@LabelAngles}{%
+ \tkz@LabelAngles[]}}
+\def\tkz@LabelAngles[#1](#2)#3{%
+ \def\tkz@optlba{#1}
+ \def\tkz@labelangle{#3}
+ \begingroup
+ \let\next\tkz@multiLBA
+ \next#2 \@nil %
+ \endgroup
+}
+%<-----------------------------------------------------------------------
+% Symbole droites perpendiculaires
+%<----------------------------------------------------------------------
+\pgfkeys{/tkzrightangle/.cd,
+ norm tkz code/.is if = normtkzcode@execute,
+ german/.code = \normtkzcode@executefalse,
+ size/.store in = \tkz@ra@size,
+ dotsize/.store in = \tkz@dotsize,
+ size = .25,
+ dotsize = 3 pt,
+ /tkzrightangle/.search also={/tikz},
+}
+\newcommand*{\tkzMarkRightAngle}[1][]{\tkz@RightAngle[#1]}
+\def\tkz@RightAngle[#1](#2,#3,#4){%
+\begingroup
+\normtkzcode@executetrue
+\pgfqkeys{/tkzrightangle}{#1}
+ \tkzpointnormalised{\pgfpointdiff{\pgfpointanchor{#3}{center}}{%
+ \pgfpointanchor{#2}{center}}}
+ \tkz@ax=\pgf@x\relax%
+ \tkz@ay=\pgf@y\relax%
+ \tkzpointnormalised{\pgfpointdiff{\pgfpointanchor{#3}{center}}{%
+ \pgfpointanchor{#4}{center}}}
+ \tkz@bx=\pgf@x\relax%
+ \tkz@by=\pgf@y\relax%
+ \ifnormtkzcode@execute%
+ \draw[/tkzrightangle/.cd,#1]
+ (#3) --++( 28.45274*\tkz@ra@size\tkz@ax , 28.45274*\tkz@ra@size\tkz@ay)
+ --++( 28.45274*\tkz@ra@size\tkz@bx , 28.45274*\tkz@ra@size\tkz@by)
+ --++(-28.45274*\tkz@ra@size\tkz@ax ,-28.45274*\tkz@ra@size\tkz@ay)
+ -- (#3);
+ \else%
+ % find angles
+ \tkzFindSlopeAngle(#3,#2)\tkzGetAngle{tkz@dirOne}
+ \tkzFindSlopeAngle(#3,#4)\tkzGetAngle{tkz@dirTwo}
+ \tkzNormalizeAngle(\tkz@dirOne,\tkz@dirTwo)
+ \edef\tkzCircleAngle{\fpeval{(\tkz@SecondAngle+\tkz@FirstAngle)/2}}
+ \tkzDrawArcRAN[/tkzrightangle/.cd,#1](#3,\tkz@ra@size)%
+ (\tkz@FirstAngle,\tkz@SecondAngle)
+ \path (#3) --+ (\tkzCircleAngle:\tkz@ra@size/2)
+ node[fill,circle,minimum size=\tkz@dotsize,inner sep=0 pt] {};
+\fi%
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkz@multiRA#1 #2\@nil{%
+\protected@edef\tkz@temp{
+ \noexpand \tkzMarkRightAngle[\tkz@optRA](#1)}\tkz@temp%
+\def\tkz@nextArg{#2}%
+ \ifx\tkzutil@empty\tkz@nextArg
+ \let\next\@gobble
+ \fi
+\next#2\@nil
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzMarkRightAngles{\pgfutil@ifnextchar[{\tkz@RightAngles}{%
+ \tkz@RightAngles[]}}
+\def\tkz@RightAngles[#1](#2){%
+\xdef\tkz@optRA{#1}
+\begingroup
+ \let\next\tkz@multiRA
+ \next#2 \@nil %
+\endgroup
+}
+
+\makeatother
+\endinput
+ \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-arcs.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-arcs.tex
new file mode 100644
index 00000000000..7c0584c8f05
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-arcs.tex
@@ -0,0 +1,167 @@
+% tkz-obj-eu-arcs.tex
+% Copyright 2011 by Alain Matthes
+% This file may be distributed and/or modified
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+\typeout{2020/01/23 3.01c tkz-obj-eu-arcs.tex}
+\makeatletter
+%<------------------------------ Arcs -------------------------------------–
+% options : delta
+% \def\tkz@delta{0}
+% \tikzset{arc style/.style={#1}}
+% \pgfkeys{/tikz/.cd,delta/.code={\def\tkz@delta{#1}}}
+
+\gdef\tkz@numa{0}
+\pgfkeys{/drawarc/.cd,
+ type/.is choice,
+ type/towards/.code = \def\tkz@numa{0},
+ type/rotate/.code = \def\tkz@numa{1},
+ type/angles/.code = \def\tkz@numa{2},
+ type/R/.code = \def\tkz@numa{3},
+ type/R with nodes/.code = \def\tkz@numa{4},
+ towards/.style = {type=towards},
+ rotate/.style = {type=rotate},
+ R/.style = {type=R},
+ angles/.style = {type=angles},
+ R with nodes/.style = {type=R with nodes},
+ diameter/.code = {},
+ arc/.code = {},
+ size/.code = {},
+ mark/.code = {},
+ mkpos/.code = {},
+ mksize/.code = {},
+ mkcolor/.code = {},
+ type/.default = towards,
+ delta/.store in = \tkz@delta,
+ delta = 0,
+ /drawarc/.search also = {/tikz}
+}
+\def\tkzDrawArc{\pgfutil@ifnextchar[{\tkz@DrawArc}{\tkz@DrawArc[]}}
+\def\tkz@DrawArc[#1](#2,#3)(#4){%
+\begingroup
+\pgfqkeys{/drawarc}{#1}
+\ifcase\tkz@numa%
+ \tkzDrawArcTowards[#1](#2,#3)(#4)
+\or% 1
+ \tkzDrawArcRotate[#1](#2,#3)(#4)
+\or% 2
+ \tkzDrawArcAngles[#1](#2,#3)(#4)
+\or% 3
+ \tkzDrawArcRAngles[#1](#2,#3)(#4)
+ \or% 4
+ \tkzDrawArcR[#1](#2,#3)(#4)
+\fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% ARC nodes #2 center #3 first point last point #4
+% delta un peu plus à chaque extrémité
+% example : \tkzDrawArc(A,B)(C)
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawArcTowards{\pgfutil@ifnextchar[{\tkz@DrawArcN}{\tkz@DrawArcN[]}}
+\def\tkz@DrawArcN[#1](#2,#3)(#4){%
+\begingroup
+ \tkzCalcLength(#2,#3)\tkzGetLength{tkz@radius}
+ \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz@FirstAngle}
+ \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz@SecondAngle}
+ \tkz@DrawArcRAngles[#1](#2,\tkz@radius pt)(\tkz@FirstAngle,\tkz@SecondAngle)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% nodes #2 center #3 first point rotate #4 with Angle
+% delta un peu plus à chaque extrémité
+% tkzDrawArcRotate(O,A)(60)
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawArcRotate{\pgfutil@ifnextchar[{\tkz@DrawArcRotate}{%
+ \tkz@DrawArcRotate[]}}
+\def\tkz@DrawArcRotate[#1](#2,#3)(#4){%
+\begingroup
+ \tkzCalcLength(#2,#3) \tkzGetLength{tkz@radius}
+ \tkzFindSlopeAngle(#2,#3) \tkzGetAngle{tkz@FirstA}
+ \pgfmathadd{\tkz@FirstA}{#4}
+ \edef\tkz@SecondA{\pgfmathresult}
+ \pgfmathgreaterthan{#4}{0}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \tkz@DrawArcRAngles[#1](#2,\tkz@radius pt)(\tkz@FirstA,\tkz@SecondA)
+ \else
+ \tkz@DrawArcRAngles[#1](#2,\tkz@radius pt)(\tkz@SecondA,\tkz@FirstA)
+ \fi
+ \endgroup
+}
+%<--------------------------------------------------------------------------–>
+% deux angles
+% \tkzDrawArcAngles(O,A)(0,60)
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawArcAngles{\pgfutil@ifnextchar[{\tkz@DrawArcAngles}{%
+ \tkz@DrawArcAngles[]}}
+\def\tkz@DrawArcAngles[#1](#2,#3)(#4,#5){%
+\begingroup
+ \tkzCalcLength(#2,#3)
+ \tkz@DrawArcRAngles[#1](#2,\tkzLengthResult pt)(#4,#5)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% #1 center #2 radius #4 first angle (degree) #5 second angle (degree)
+% angles 0 .. 180 or -180 .. 0
+%<--------------------------------------------------------------------------–>
+% example : \tkzDrawArc(A,2 cm)(30,90)
+\def\tkzDrawArcRAngles{\pgfutil@ifnextchar[{\tkz@DrawArcRAngles}{%
+ \tkz@DrawArcRAngles[]}}
+\def\tkz@DrawArcRAngles[#1](#2,#3)(#4,#5){%
+ \begingroup
+ \pgfmathparse{#4}\edef\tkz@FirstAngle{\pgfmathresult}%
+ \pgfmathparse{#5}\edef\tkz@SecondAngle{\pgfmathresult}%
+ \pgfmathgreaterthan{\tkz@FirstAngle}{0}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \pgfmathsubtract{\tkz@FirstAngle}{360}
+ \edef\tkz@FirstAngle{\pgfmathresult}%
+ \fi
+ \else
+ \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \pgfmathadd{\tkz@SecondAngle}{360}
+ \edef\tkz@SecondAngle{\pgfmathresult}%
+ \fi
+ \fi
+ \pgfmathsubtract{\tkz@FirstAngle}{\tkz@delta}
+ \edef\tkz@FirstAngle{\pgfmathresult}%
+ \pgfmathadd{\tkz@SecondAngle}{\tkz@delta}
+ \edef\tkz@SecondAngle{\pgfmathresult}
+ \draw[shift = {(#2)},compass style,/drawarc/.cd,#1]%
+ (\tkz@FirstAngle:#3) arc (\tkz@FirstAngle:\tkz@SecondAngle:#3);
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Degree #2 center #4 - #3 radius from #5 (degree) to #6(degree)
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawArcRwithNodes{\pgfutil@ifnextchar[{\tkz@DrawArcRwithNodes}{%
+ \tkz@DrawArcRwithNodes[]}}
+\def\tkz@DrawArcRwithNodes[#1](#2,#3,#4)(#5,#6){%
+\begingroup
+ \tkzCalcLength(#3,#4)
+ \tkzFindSlopeAngle(#2,#5)\tkzGetAngle{tkz@FirstAngle}
+ \tkzFindSlopeAngle(#2,#6)\tkzGetAngle{tkz@SecondAngle}
+ \tkz@DrawArcRAngles[#1](#2,\tkzLengthResult)%
+ (\tkz@FirstAngle,\tkz@SecondAngle)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Nodes R #2 center #3 radius en cm from #4(node) to #5(node)
+% \tkzDrawArcR(O,2 cm)(A,B)
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawArcR{\pgfutil@ifnextchar[{\tkz@DrawArcR}{\tkz@DrawArcR[]}}
+\def\tkz@DrawArcR[#1](#2,#3)(#4,#5){%
+\begingroup
+ \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz@FirstAngle}
+ \tkzFindSlopeAngle(#2,#5)\tkzGetAngle{tkz@SecondAngle}
+ \tkz@DrawArcRAngles[#1](#2,#3)(\tkz@FirstAngle,\tkz@SecondAngle)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\makeatother
+\endinput
+ \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles.tex
new file mode 100644
index 00000000000..aa1b259d8a8
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-circles.tex
@@ -0,0 +1,237 @@
+% tkz-obj-eu-circles.tex
+% Copyright 2011 by Alain Matthes
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+\typeout{2020/01/23 3.01c tkz-obj-eu-circles.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% tkzCircle center and one point
+%<--------------------------------------------------------------------------–>
+% attention radius circle is defined by center and a point on the circle
+% R defined by center and the value of the radius
+% no need to define a circle with R tikz uses this method.
+% through instead of radius
+\def\tkz@numc{0}
+\pgfkeys{/tkzDefCircle/.cd,
+ through/.code = \def\tkz@numc{0},
+ radius/.code = \def\tkz@numc{0},
+ diameter/.code = \def\tkz@numc{1},
+ circum/.code = \def\tkz@numc{2},
+ in/.code = \def\tkz@numc{3},
+ ex/.code = \def\tkz@numc{4},% new
+ euler/.code = \def\tkz@numc{5},
+ nine/.code = \def\tkz@numc{5},
+ apollonius/.code = \def\tkz@numc{6},
+ orthogonal from/.code args = {#1}{\def\tkz@ptfrom{#1},
+ \def\tkz@numc{7}},
+ orthogonal through/.code args = {#1 and #2}{\def\tkz@ptone{#1}
+ \def\tkz@pttwo{#2}
+ \def\tkz@numc{8}},
+ spieker/.code = \def\tkz@numc{9},
+ K/.code = \def\tkz@koeff{#1},% apollonius
+ K = 1,
+ through
+ }
+\def\tkzDefCircle{\pgfutil@ifnextchar[{\tkz@DefCircle}{\tkz@DefCircle[]}}
+\def\tkz@DefCircle[#1](#2){%
+\begingroup
+\pgfqkeys{/tkzDefCircle}{#1}
+\ifcase\tkz@numc%
+ \tkzDefCircleThrough(#2)%
+ \or% 1
+ \tkzDefCircleD(#2)
+ \or% 2
+ \tkzDefCircumCircle(#2)
+ \or% 3
+ \tkzDefInCircle(#2)
+ \or% 4
+ \tkzDefExCircle(#2)
+ \or% 5
+ \tkzDefEulerCircle(#2)
+ \or% 6
+ \tkzDefApolloniusCircle(#2)
+ \or% 7
+ \tkzDefOrthogonalCircle(#2,\tkz@ptfrom)
+ \or% 8
+ \tkzDefOrthoThroughCircle(#2,\tkz@ptone,\tkz@pttwo)
+ \or% 9
+ \tkzDefSpiekerCircle(#2)
+ \fi
+\endgroup
+}
+
+%<--------------------------------------------------------------------------–>
+% Circum Circle
+%<--------------------------------------------------------------------------–>
+\def\tkzDefCircumCircle(#1,#2,#3){%
+\begingroup
+ \tkzCircumCenter(#1,#2,#3)
+ \tkzCalcLength(#1,tkzPointResult)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% In(scribe) Circle
+%<--------------------------------------------------------------------------–>
+\def\tkzDefInCircle(#1,#2,#3){%
+\begingroup
+ \tkzInCenter(#1,#2,#3)
+ \pgfnodealias{tkz@incenter}{tkzPointResult}
+ \tkzUProjection(#1,#3)(tkz@incenter)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+ \tkzCalcLength(tkzPointResult,tkz@incenter)
+ \pgfnodealias{tkzPointResult}{tkz@incenter}
+ \pgfnodealias{tkzFirstPointResult}{tkz@incenter}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Ex(scribe) Circle
+%<--------------------------------------------------------------------------–>
+\def\tkzDefExCircle(#1,#2,#3){%
+\begingroup
+ \tkzExCenter(#1,#2,#3)
+ \pgfnodealias{tkz@excenter}{tkzPointResult}
+ \tkzUProjection(#1,#3)(tkz@excenter)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+ \tkzCalcLength(tkzPointResult,tkz@excenter)% for tkzGetLength
+ \pgfnodealias{tkzPointResult}{tkz@excenter}
+ \pgfnodealias{tkzFirstPointResult}{tkz@excenter}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Radius Ex Circle
+%<--------------------------------------------------------------------------–>
+\def\tkzDefExRadius(#1,#2,#3){%
+\begingroup
+ \tkzExCenter(#1,#2,#3)
+ \tkzUProjection(#1,#3)(tkzPointResult)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% The nine-point circle, also called Euler's circle or the Feuerbach circle
+% best way Ma,Mb,Mc circum center 2020
+%<--------------------------------------------------------------------------–>
+\def\tkzDefEulerCircle(#1,#2,#3){%
+\begingroup
+ \tkzDefMidPoint(#1,#2) \pgfnodealias{tkz@e1}{tkzPointResult}
+ \tkzDefMidPoint(#2,#3) \pgfnodealias{tkz@e2}{tkzPointResult}
+ \tkzDefMidPoint(#1,#3) \pgfnodealias{tkz@e3}{tkzPointResult}
+ \tkzCircumCenter(tkz@e1,tkz@e2,tkz@e3)
+ \tkzCalcLength(tkzPointResult,tkz@e1)
+\endgroup
+}
+\let\tkzDefNinePointsCircle\tkzEulerCircle%
+\let\tkzFeuerBachCircle\tkzEulerCircle%
+
+\def\tkzDefEulerRadius(#1,#2,#3){%
+\begingroup
+ \tkzEulerCenter(#1,#2,#3)
+ \pgfnodealias{eur@pta}{tkzPointResult}
+ \tkzDefMidPoint(#1,#2)
+ \tkzCalcLength(eur@pta,tkzPointResult)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Apollonius circle
+%<--------------------------------------------------------------------------–>
+\def\tkzDefApolloniusCircle(#1,#2){%
+\begingroup
+ \tkz@VecK[\tkz@koeff/(1+\tkz@koeff)](#1,#2)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#1,#2)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+ \tkzDefMidPoint(tkzFirstPointResult,tkzSecondPointResult)
+ \tkzCalcLength(tkzPointResult,tkzFirstPointResult)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Apollonius radius
+%<--------------------------------------------------------------------------–>
+\pgfkeys{/tkzApolloniusR/.cd,
+ K/.code = \def\tkz@koeff{#1},% apollonius
+ K = 1
+ }
+\def\tkzDefApolloniusRadius{\pgfutil@ifnextchar[{%
+ \tkz@DefApolloniusRadius}{\tkz@DefApolloniusRadius[]}}
+\def\tkz@DefApolloniusRadius[#1](#2,#3){%
+\begingroup
+ \pgfqkeys{/tkzApolloniusR}{#1}
+ \tkz@VecK[\tkz@koeff/(1+\tkz@koeff)](#2,#3)
+ \pgfnodealias{apo@pta}{tkzPointResult}
+ \tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#2,#3)
+ \pgfnodealias{apo@ptb}{tkzPointResult}
+ \tkzDefMidPoint(apo@pta,apo@ptb)
+ \tkzCalcLength(tkzPointResult,apo@pta)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Apollonius point
+%<--------------------------------------------------------------------------–>
+
+\pgfkeys{/tkzApolloniusP/.cd,
+ K/.code = \def\tkz@koeff{#1},% apollonius
+ K = 1
+ }
+\def\tkzDefApolloniusPoint{\pgfutil@ifnextchar[{\tkz@DefApolloniusPoint}{\tkz@DefApolloniusPoint[]}}
+\def\tkz@DefApolloniusPoint[#1](#2,#3){%
+\begingroup
+ \pgfqkeys{/tkzApolloniusP}{#1}
+ \tkzDefBarycentricPoint(#2=1,#3=\tkz@koeff)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Apollonius center
+%<--------------------------------------------------------------------------–>
+\pgfkeys{/tkzApolloniusC/.cd,
+ K/.code = \def\tkz@koeff{#1},% apollonius
+ K = 1
+ }
+\def\tkzApolloniusCenter{\pgfutil@ifnextchar[{\tkz@ApolloniusCenter}{\tkz@ApolloniusCenter[]}}
+\def\tkz@ApolloniusCenter[#1](#2,#3){%
+\begingroup
+ \pgfqkeys{/tkzApolloniusC}{#1}
+ \tkz@VecK[\tkz@koeff/(1+\tkz@koeff)](#2,#3)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#2,#3)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+ \tkzDefMidPoint(tkzFirstPointResult,tkzSecondPointResult)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDefOrthogonalCircle(#1,#2,#3){%
+\begingroup
+ \tkzTgtFromP(#1,#2)(#3)
+ \tkzCalcLength[cm](#1,tkzFirstPointResult)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDefOrthoThroughCircle(#1,#2,#3,#4){%
+\begingroup
+ \tkzCalcLength[cm](#1,#3)\tkzGetLength{tkz@lnb}%
+ \edef\tkz@lnc{\fpeval{1/\tkz@lnb}}
+ \tkzVecKNorm[\tkz@lnc](#1,#3)
+ \pgfnodealias{tkz@PointResult}{tkzPointResult}
+ \tkzCircumCenter(tkz@PointResult,#3,#4)
+ \tkzCalcLength(tkzPointResult,#3)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Spieker Circle
+%<--------------------------------------------------------------------------–>
+\def\tkzDefSpiekerCircle(#1,#2,#3){%
+\begingroup
+ \tkzSpiekerCenter(#1,#2,#3)
+ \pgfnodealias{tkz@spka}{tkzPointResult}
+ \tkzDefMidPoint(#1,#2)
+ \tkzUProjection(#1,#2)(tkzPointResult)
+ \tkzCalcLength(tkz@spka,tkzPointResult)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% End Def Circle
+%<--------------------------------------------------------------------------–>
+ \makeatother
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-compass.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-compass.tex
new file mode 100644
index 00000000000..e0f00f678da
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-compass.tex
@@ -0,0 +1,105 @@
+% tkz-obj-eu-compass.tex
+% Copyright 2011 by Alain Matthes
+% This file may be distributed and/or modified
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+\typeout{2020/01/23 3.01c tkz-obj-eu-compass.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% Author Alain Matthes
+% idea from Y. Combe
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% Utilisation du Compas : Compass
+%<--------------------------------------------------------------------------–>
+% Setup Compass
+%<--------------------------------------------------------------------------–>
+\pgfkeys{%
+ setupcompass/.cd,
+ line width/.code = {\global\edef\tkz@compass@lw{#1}},
+ color/.code = {\global\edef\tkz@compass@color{#1}},
+ style/.code = {\global\edef\tkz@compass@style{#1}},
+ }
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+\def\tkzSetUpCompass{\pgfutil@ifnextchar[{\tkzActivOff\tkz@SetUpCompass}{%
+ \tkzActivOff\tkz@SetUpCompass[]}}
+%<--------------------------------------------------------------------------–>
+\def\tkz@SetUpCompass[#1]{%
+\pgfkeys{%
+ setupcompass/.cd,
+ line width = \tkz@euc@compasswidth,
+ color = \tkz@euc@compasscolor,
+ style = \tkz@euc@compassstyle
+ }
+\pgfqkeys{/setupcompass}{#1}
+\tikzset{compass style/.style={color = \tkz@compass@color,
+ line width = \tkz@compass@lw,
+ style = \tkz@compass@style
+ }}
+}
+%<--------------------------------------------------------------------------–>
+% \tkzCompass(A, B)
+%
+% Marque de compas auto-ajustée en longueur
+% #2 center #3 le point
+% Par défaut:
+% longueur : 1cm, mais avec un maximum d'un angle de 180°
+% angle calculé pour la longueur
+% style traits pleins
+
+%<--------------------------------------------------------------------------–>
+ \pgfkeys{
+ /compass/delta/.code = {\def\tkz@delta{#1}},
+ /compass/length/.code = {\def\tkz@length{#1}},
+ /compass/ratio/.code = {\def\tkz@ratio{#1}},
+ /compass/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
+ \pgfkeysalso{\searchname/.try=#1,
+ /tikz/\searchname/.retry=#1}}
+}
+
+\def\tkzCompass{\pgfutil@ifnextchar[{\tkz@Compass}{\tkz@Compass[]}}
+\def\tkz@Compass[#1](#2,#3){%
+\begingroup
+\pgfkeys{%
+ compass/.cd,
+ length = 1,
+ delta = 0,
+ ratio = .5
+ }
+\pgfkeys{compass/.cd,#1}
+ \tkzCalcLength(#2,#3)\tkzGetLength{tkz@tempLen}
+\ifnum\tkz@delta=0 %
+ \pgfmathsetmacro{\tkz@delta}{min(deg(\tkz@length cm/ \tkz@tempLen pt),180)/2}
+\fi
+ \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz@angle}%
+ \draw[shift ={(#2)},/compass/.cd,compass style,#1]%
+ (\tkz@angle-\tkz@delta:\tkz@tempLen pt)%
+ arc (\tkz@angle-\tkz@delta:\tkz@angle+\tkz@delta:\tkz@tempLen pt);
+ %};
+\endgroup}
+%<--------------------------------------------------------------------------–>
+\def\tkz@multiCompass#1 #2\@nil{%
+ \protected@edef\tkz@temp{
+ \noexpand \tkzCompass[\tkz@optcompass](#1)}\tkz@temp%
+ \def\tkz@nextArg{#2}%
+ \ifx\tkzutil@empty\tkz@nextArg
+ \let\next\@gobble
+ \fi
+ \next#2\@nil
+}
+\def\tkzCompasss{\pgfutil@ifnextchar[{\tkz@Compasss}{\tkz@Compasss[]}}
+
+\def\tkz@Compasss[#1](#2){%
+\global\edef\tkz@optcompass{#1}
+\begingroup
+ \let\next\tkz@multiCompass
+ \next#2 \@nil %
+\endgroup
+}%
+
+\makeatother
+\endinput
+ \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-circles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-circles.tex
new file mode 100644
index 00000000000..20a07f6fa64
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-circles.tex
@@ -0,0 +1,251 @@
+% tkz-obj-eu-draw-circles.tex
+% Copyright 2011 by Alain Matthes
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+\typeout{2020/01/23 3.01c tkz-obj-eu-draw-circles.tex}
+\makeatletter
+%for compatibility
+%<--------------------------------------------------------------------------–>
+\def\tkzDefCircleR(#1,#2){%
+\begingroup
+ \edef\tkzLengthResult{\fpeval{round(#2,5)}}
+ \global\let\tkzLengthResult\tkzLengthResult
+ \tkzRenamePoint(#1){tkzPointResult}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Through Circle center and point
+%<--------------------------------------------------------------------------–>
+\def\tkzDefCircleThrough(#1,#2){%
+\begingroup
+ \tkzCalcLength(#1,#2)
+ \tkzRenamePoint(#1){tkzPointResult}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Diameter Circle
+%<--------------------------------------------------------------------------–>
+\def\tkzDefCircleD(#1,#2){%
+\begingroup
+ \tkzDefMidPoint(#1,#2)
+ \tkzCalcLength(#1,tkzPointResult)
+\endgroup
+}
+
+\def\tkz@numdc{0}
+\pgfkeys{/DrawCircle/.cd,
+ through/.code = \def\tkz@numdc{0},
+ R/.code = \def\tkz@numdc{1},
+ diameter/.code = \def\tkz@numdc{2},
+ circum/.code = \def\tkz@numdc{3},
+ in/.code = \def\tkz@numdc{4},
+ ex/.code = \def\tkz@numdc{5},
+ euler/.code = \def\tkz@numdc{6},
+ nine/.code = \def\tkz@numdc{6},
+ apollonius/.code = \def\tkz@numdc{7},
+ orthogonal from/.code args = {#1}{\def\tkz@ptfrom{#1},
+ \def\tkz@numdc{8}},
+ orthogonal through/.code args = {#1 and #2}{\def\tkz@ptone{#1}
+ \def\tkz@pttwo{#2}
+ \def\tkz@numdc{9}},
+ K/.store in = \tkz@koeff,% apollonius
+ through,
+ K = 1,
+ /DrawCircle/.search also={/tikz}
+}
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% Drawing a circle >
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawCircle{\pgfutil@ifnextchar[{\tkz@DrawCircle}{\tkz@DrawCircle[]}}
+\def\tkz@DrawCircle[#1](#2){%
+\begingroup
+\pgfqkeys{/DrawCircle}{#1}
+\ifcase\tkz@numdc%
+ \tkzDefCircleThrough(#2)
+ \or% 1
+ \tkzDefCircleR(#2)
+ \or% 2
+ \tkzDefCircleD(#2)
+ \or% 3
+ \tkzDefCircumCircle(#2)
+ \or% 4
+ \tkzDefInCircle(#2)
+ \or% 4
+ \tkzDefExCircle(#2)
+ \or% 5
+ \tkzDefEulerCircle(#2)
+ \or% 6
+ \tkzDefApolloniusCircle(#2)
+ \or% 7
+ \tkzDefOrthogonalCircle(#2,\tkz@ptfrom)
+ \or% 8
+ \tkzDefOrthoThroughCircle(#2,\tkz@ptone,\tkz@pttwo)
+ \fi
+ \draw[line style,/DrawCircle/.cd,#1]
+ (tkzPointResult) circle (\tkzLengthResult pt);
+\endgroup
+}
+
+%<--------------------------------------------------------------------------–>
+\def\tkz@multicircles#1 #2\@nil{%
+\protected@edef\tkz@temp{
+\noexpand \tkzDrawCircle[\tkz@optcircle](#1)}\tkz@temp%
+\def\tkz@nextArg{#2}%
+\ifx\tkzutil@empty\tkz@nextArg
+ \let\next\@gobble
+\fi
+\next#2\@nil
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawCircles{\pgfutil@ifnextchar[{\tkz@DrawCircles}{\tkz@DrawCircles[]}}
+\def\tkz@DrawCircles[#1](#2){%
+\xdef\tkz@optcircle{#1}
+\begingroup
+ \let\next\tkz@multicircles
+ \next#2 \@nil %
+\endgroup
+}%
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% #2 #3 rayon
+\def\tkz@numdsc{0}
+\pgfkeys{/@SemiCircle/.cd,
+ through/.code = \def\tkz@numdsc{0},
+ diameter/.code = \def\tkz@numdsc{1},
+ swap/.is if = tkz@sawp@sc,
+ swap/.default = true,
+ swap = false,
+ through,
+ /@SemiCircle/.search also={/tikz}
+ }
+\def\tkzDrawSemiCircle{\pgfutil@ifnextchar[{\tkz@DrawSemiCircle}{%
+ \tkz@DrawSemiCircle[]}}
+\def\tkz@DrawSemiCircle[#1](#2){%
+\begingroup
+\pgfqkeys{/@SemiCircle}{#1}
+\ifcase\tkz@numdsc%
+ \tkzDrawSemiCircleThrough(#2)
+\or%
+ \tkzDrawSemiCircleDiameter(#2)
+\fi
+ \tkzDrawArc[#1](\tkz@Center,\tkz@FirstPoint)(\tkz@SecondPoint)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawSemiCircleThrough(#1,#2){%
+ \tkzDefPointBy[symmetry=center #1](#2)
+ \pgfnodealias{tkz@pt}{tkzPointResult}
+ \def\tkz@Center{#1}
+ \iftkz@sawp@sc
+ \gdef\tkz@FirstPoint{tkz@pt}
+ \gdef\tkz@SecondPoint{#2}
+ \else
+ \gdef\tkz@FirstPoint{#2}
+ \gdef\tkz@SecondPoint{tkz@pt}
+ \fi
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawSemiCircleDiameter(#1,#2){%
+ \tkzDefMidPoint(#1,#2)
+ \pgfnodealias{tkz@Center}{tkzPointResult}
+ \def\tkz@Center{tkz@Center}
+ \iftkz@sawp@sc
+ \def\tkz@FirstPoint{#1}
+ \def\tkz@SecondPoint{#2}
+ \else
+ \def\tkz@FirstPoint{#2}
+ \def\tkz@SecondPoint{#1}
+ \fi
+}
+
+%<---------------------------- Fill Circle --------------------------------–>
+\def\tkz@numfc{0}
+\pgfkeys{/fillcircle/.cd, radius/.code = \def\tkz@numfc{0},
+ R/.code = \def\tkz@numfc{1},
+ radius,
+ /fillcircle/.search also={/tikz}
+}
+\def\tkzFillCircle{\pgfutil@ifnextchar[{\tkz@FillCircle}{\tkz@FillCircle[]}}
+\def\tkz@FillCircle[#1](#2,#3){%
+\begingroup
+\pgfqkeys{/fillcircle}{#1}
+\ifcase\tkz@numfc%
+ % first case 0
+ \tkzCalcLength(#2,#3)
+ \fill[/fillcircle/.cd,#1] (#2) circle (\tkzLengthResult pt);%
+ \or% 1
+ \fill[/fillcircle/.cd,#1] (#2) circle (#3);%
+ \fi
+\endgroup
+}
+%<----------------------- Out Clip Circle ---------------------------------–>
+\def\tkz@numocc{0}
+\pgfkeys{/clipoutcircle/.cd, radius/.code = \def\tkz@numocc{0},
+ R/.code = \def\tkz@numocc{1},
+ radius}
+%<--------------------------------------------------------------------------–>
+\def\tkzClipOutCircle{\pgfutil@ifnextchar[{\tkz@ClipOutCircle}{%
+ \tkz@ClipOutCircle[]}}
+\def\tkz@ClipOutCircle[#1](#2,#3){%
+\pgfqkeys{/clipoutcircle}{#1}
+\ifcase\tkz@numocc
+ \tkzCalcLength(#2,#3)
+ \clip[tkzreverseclip] (#2) circle (\tkzLengthResult pt);
+ \or% 1
+ \clip[tkzreverseclip] (#2) circle (#3);
+ \fi
+}
+%<--------------------------- Clip Circle ---------------------------------–>
+\def\tkz@numcc{0}
+\pgfkeys{/clipcircle/.cd,
+ through/.code = \def\tkz@numcc{0},
+ R/.code = \def\tkz@numcc{1},
+ through}
+%<--------------------------------------------------------------------------–>
+\def\tkzClipCircle{\pgfutil@ifnextchar[{\tkz@ClipCircle}{\tkz@ClipCircle[]}}
+
+\def\tkz@ClipCircle[#1](#2,#3){%
+\pgfqkeys{/clipcircle}{#1}
+\ifcase\tkz@numcc
+ \tkzCalcLength(#2,#3)
+ \clip (#2) circle (\tkzLengthResult pt);
+ \or% 1
+ \clip (#2) circle (#3);
+ \fi
+}
+%<--------------------------- Label Circle --------------------------------–>
+% attention radius circle is defined by center and a point on the circle
+% R defined by center and the value of the radius
+\def\tkz@numlc{0}
+\pgfkeys{/labelcircle/.cd,
+ through/.code = \def\tkz@numlc{0},
+ R/.code = \def\tkz@numlc{1},
+ through,
+ /labelcircle/.search also={/tikz}
+}
+
+\def\tkzLabelCircle{\pgfutil@ifnextchar[{\tkz@LabelCircle}{%
+ \tkz@LabelCircle[]}}
+% [option] (#2,#3) #2 center #3 soit un point du cercle soit le radius
+% #4 angle #5 the label
+\def\tkz@LabelCircle[#1](#2,#3)(#4)#5{%
+\begingroup
+\pgfqkeys{/labelcircle}{#1}
+\ifcase\tkz@numlc
+ \tkzURotateAngle(#2,#4)(#3)
+ \node[/labelcircle/.cd,#1] at (tkzPointResult) {#5};
+\or% 1
+ \path (#2)--++(#3,0) coordinate (tkzPointResult);
+ \tkzURotateAngle(#2,#4)(tkzPointResult)
+ \node[/labelcircle/.cd,#1] at (tkzPointResult) {#5};
+\fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+ \makeatother
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-lines.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-lines.tex
new file mode 100644
index 00000000000..76923e844b7
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-lines.tex
@@ -0,0 +1,425 @@
+% tkz-obj-eu-draw-lines.tex
+% Copyright 2011 by Alain Matthes
+% This file may be distributed and/or modified
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+\typeout{2020/01/23 3.01c tkz-obj-eu-draw-lines.tex}
+\makeatletter
+\def\tkz@numdl{0}
+\pgfkeys{/DrawLine/.cd,
+ median/.code = \def\tkz@numdl{0},
+ altitude/.code = \def\tkz@numdl{1},
+ bisector/.code = \def\tkz@numdl{2},
+ none/.code = \def\tkz@numdl{3},
+ none,
+ /DrawLine/.search also={/tikz}
+}
+%<--------------------------------------------------------------------------–>
+% Drawing a line >
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawLine{\pgfutil@ifnextchar[{\tkz@DrawLine}{\tkz@DrawLine[]}}
+\def\tkz@DrawLine[#1](#2){%
+\begingroup
+\pgfqkeys{/DrawLine}{#1}
+\ifcase\tkz@numdl%
+ \tkzDrawMedian[#1](#2)
+ \or% 1
+ \tkzDrawAltitude[#1](#2)
+ \or% 2
+ \tkzDrawBisector[#1](#2)
+ \or% 3
+ \tkzDrawSLine[#1](#2)
+ \fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Droites particulières d'un triangle
+%<--------------------------------------------------------------------------–>
+%
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawSLine{\pgfutil@ifnextchar[{\tkz@DrawSLine}{\tkz@DrawSLine[]}}
+\def\tkz@DrawSLine[#1](#2,#3){%
+\begingroup
+\draw[#1] (#2) to (#3);
+\endgroup
+}%
+%<--------------------------------------------------------------------------–>
+% median
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawMedian{\pgfutil@ifnextchar[{\tkz@Median}{\tkz@Median[]}}
+\def\tkz@Median[#1](#2,#3,#4){%
+\begingroup
+ \tkzDefMidPoint(#2,#4)
+ \tkzDrawSLine[add= 0 and 0,/DrawLine/.cd,#1](#3,tkzPointResult)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% altitude
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawAltitude{\pgfutil@ifnextchar[{\tkz@Altitude}{\tkz@Altitude[]}}
+\def\tkz@Altitude[#1](#2,#3,#4){%
+\begingroup
+ \tkzUProjection(#2,#4)(#3)
+ \tkzDrawSLine[add= 0 and 0,/DrawLine/.cd,#1](#3,tkzPointResult)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% bisector
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawBisector{\pgfutil@ifnextchar[{\tkz@Bisector}{\tkz@Bisector[]}}
+\def\tkz@Bisector[#1](#2,#3,#4){%
+\begingroup
+ \tkzDefBisectorLine(#2,#3,#4)
+ \tkzInterLL(#2,#4)(#3,tkzPointResult)
+ \tkzDrawSLine[add= 0 and 0,/DrawLine/.cd,#1](#3,tkzPointResult)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% \def\tkz@recuplast(#1,#2){\def\tkz@last{#1}}
+% \def\tkz@stop{\tkz@stop}
+%<--------------------------------------------------------------------------–>
+% medians
+%<--------------------------------------------------------------------------–>
+\def\tkz@@Medians(#1,#2,#3)(#4,#5){%
+ \def\tkz@tmp{#5}%
+ \ifx\tkz@tmp\tkz@stop\else\tkz@@Medians(#2,#3)(#5)\fi
+ \tkz@recuplast(#3)
+
+ \pgfcoordinate{#4}{\pgfpointscale{0.5}{%
+ \pgfpointadd{\pgfpointanchor{#2}{center}}{%
+ \pgfpointanchor{\tkz@last}{center}}%
+ }}%
+ \protected@edef\tkz@temp{\noexpand
+ \tkzDrawLine[add= 0 and 0,/DrawTLines/.cd,\tkz@opttline](#4,#1)}\tkz@temp%
+ \ifx\tkzutil@empty\tkz@newpoint@name
+ \else
+ \coordinate (\tkz@newpoint@name#4) at (#4);
+ \fi
+}
+\def\tkzDrawMedians{\pgfutil@ifnextchar[{\tkz@Medians}{\tkz@Medians[]}}
+\def\tkz@Medians[#1](#2)#3{%
+\begingroup
+ \xdef\tkz@opttline{#1}
+ \tkz@@Medians(#2,#2)(#3,\tkz@stop)
+ \endgroup
+}
+
+%<--------------------------------------------------------------------------–>
+% Altitudes
+%<--------------------------------------------------------------------------–>
+\def\tkz@@Altitudes(#1,#2,#3)(#4,#5){%
+ \def\tkz@tmp{#5}%
+ \ifx\tkz@tmp\tkz@stop\else\tkz@@Altitudes(#2,#3)(#5)\fi
+ \tkz@recuplast(#3)
+ \tkzUProjection(#2,\tkz@last)(#1)
+ \pgfnodealias{tkz@tmp@pt}{tkzPointResult}
+ \protected@edef\tkz@temp{%
+ \noexpand
+ \tkzDrawLine[add= 0 and 0,/DrawTLines/.cd,\tkz@opttline](#1,tkz@tmp@pt)}\tkz@temp%
+ \ifx\tkzutil@empty\tkz@newpoint@name
+ \else
+ \coordinate (\tkz@newpoint@name#4) at (tkz@tmp@pt);
+ \fi
+}
+\def\tkzDrawAltitudes{\pgfutil@ifnextchar[{\tkz@DrawAltitudes}{\tkz@DrawAltitudes[]}}
+\def\tkz@DrawAltitudes[#1](#2)#3{%
+\begingroup
+ \xdef\tkz@opttline{#1}
+ \tkz@@Altitudes(#2,#2)(#3,\tkz@stop)
+ \endgroup
+ }
+%<--------------------------------------------------------------------------–>
+% bisectors
+%<--------------------------------------------------------------------------–>
+\def\tkz@@Bisectors(#1,#2,#3)(#4,#5){%
+\def\tkz@tmp{#5}%
+\ifx\tkz@tmp\tkz@stop\else\tkz@@Bisectors(#2,#3)(#5)\fi
+ \tkz@recuplast(#3)
+ \tkzDefBisectorLine(\tkz@last,#1,#2)
+ \tkzInterLL(#2,\tkz@last)(#1,tkzPointResult)
+ \pgfnodealias{tkz@tmp@pt}{tkzPointResult}
+ \protected@edef\tkz@temp{
+ \noexpand \tkzDrawLine[add= 0 and 0,
+ /DrawTLines/.cd,
+ \tkz@opttline](#1,tkz@tmp@pt)}\tkz@temp
+ \ifx\tkzutil@empty\tkz@newpoint@name
+ \else
+ \coordinate (\tkz@newpoint@name#4) at (tkz@tmp@pt);
+ \fi
+}
+\def\tkzDrawBisectors{\pgfutil@ifnextchar[{\tkz@DrawBisectors}{\tkz@DrawBisectors[]}}
+
+\def\tkz@DrawBisectors[#1](#2)#3{%
+\begingroup
+ \xdef\tkz@opttline{#1}
+ \tkz@@Bisectors(#2,#2)(#3,\tkz@stop)
+\endgroup
+}
+%<-------------------------------------------------------------------------–
+%<-------------------------------------------------------------------------–
+%<-------------------------------------------------------------------------–
+\def\tkz@numdtls{0}
+\pgfkeys{/DrawTLines/.cd,
+ median/.code = \def\tkz@numdtls{0},
+ altitude/.code = \def\tkz@numdtls{1},
+ bisector/.code = \def\tkz@numdtls{2},
+ median,
+ name/.store in = \tkz@newpoint@name,
+ name/.initial = {},
+ name = {},
+ /DrawTLines/.search also={/tikz}
+}
+%<--------------------------------------------------------------------------–>
+% Drawing tr lines >
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawTLines{\pgfutil@ifnextchar[{\tkz@DrawTLines}{\tkz@DrawTLines[]}}
+\def\tkz@DrawTLines[#1](#2)#3{%
+\begingroup
+\pgfqkeys{/DrawTLines}{#1}
+\ifcase\tkz@numdtls%
+ \tkzDrawMedians[#1](#2){#3}
+ \or% 1
+ \tkzDrawAltitudes[#1](#2){#3}
+ \or% 2
+ \tkzDrawBisectors[#1](#2){#3}
+ \fi
+\endgroup
+}
+%<-------------------------------------------------------------------------–
+% tkzDrawLines
+%<-------------------------------------------------------------------------–
+\def\tkz@@multiLines#1 #2\@nil{%
+ \protected@edef\tkz@temp{
+ \noexpand \tkzDrawLine[\tkz@optline](#1)}\tkz@temp%
+ \def\tkz@nextArg{#2}%
+ \ifx\tkzutil@empty\tkz@nextArg
+ \let\next\@gobble
+ \fi
+ \next#2\@nil
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawLines{\pgfutil@ifnextchar[{\tkz@DrawLines}{%
+ \tkz@DrawLines[]}}
+\def\tkz@DrawLines[#1](#2){%
+\xdef\tkz@optline{#1}
+\begingroup
+ \let\next\tkz@@multiLines
+ \next#2 \@nil %
+\endgroup
+}%
+%<-------------------------------------------------------------------------–>
+% Label
+%<-------------------------------------------------------------------------–>
+\def\tkzLabelLine{\pgfutil@ifnextchar[{\tkz@AddLabelLine}{\tkz@AddLabelLine[]}}
+\def\tkz@AddLabelLine[#1](#2,#3)#4{\path (#2) to node[#1]{#4}(#3);}
+
+%<--------------------------------------------------------------------------–>
+% Setup Line
+%<--------------------------------------------------------------------------–>
+\pgfkeys{%
+ setupline/.cd,
+ line width/.code = {\xdef\tkz@line@lw{#1}},
+ color/.code = {\xdef\tkz@line@color{#1}},
+ style/.code = {\xdef\tkz@line@style{#1}},
+ add/.code args = {#1 and #2} {\xdef\tkz@line@left{#1}%
+ \xdef\tkz@line@right{#2}%
+ }
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzSetUpLine{\pgfutil@ifnextchar[{\tkzActivOff\tkz@SetUpLine}{%
+ \tkzActivOff\tkz@SetUpLine[]}}
+\def\tkz@SetUpLine[#1]{%
+\pgfkeys{%
+ setupline/.cd,
+ line width = \tkz@euc@linewidth,
+ color = \tkz@euc@linecolor,
+ style = \tkz@euc@linestyle,
+ add = {\tkz@euc@lineleft} and {\tkz@euc@lineright}}
+\pgfqkeys{/setupline}{#1}
+%<--------------------------------------------------------------------------–>
+% Line style
+%<--------------------------------------------------------------------------–>
+\tikzset{%
+ line style/.style ={%
+ color = \tkz@line@color,
+ line width = \tkz@line@lw,
+ style = \tkz@line@style,
+ add = {\tkz@line@left} and {\tkz@line@right}
+}}}% end setup
+%<--------------------------------------------------------------------------–>
+% draw segment (s)
+%<--------------------------------------------------------------------------–>
+\pgfkeys{/@tkzsegoptions/.cd,
+ /@tkzsegoptions/.search also={/tikz},
+}
+\def\tkzDrawSegment{\pgfutil@ifnextchar[{\tkz@DrawSegment}{%
+ \tkz@DrawSegment[]}}
+\def\tkz@DrawSegment[#1](#2,#3){%
+\begingroup
+ \pgfqkeys{/@tkzsegoptions}{#1}
+ \draw[line style,add=0 and 0,#1] (#2) to (#3);
+\endgroup
+}%
+
+\def\tkz@multiDrawSeg#1 #2\@nil{%
+ \protected@edef\tkz@temp{
+ \noexpand \tkzDrawSegment[\tkz@optseg](#1)}\tkz@temp%
+ \def\tkz@nextArg{#2}%
+ \ifx\tkzutil@empty\tkz@nextArg
+ \let\next\@gobble
+ \fi
+ \next#2\@nil
+}
+\def\tkzDrawSegments{\pgfutil@ifnextchar[{\tkz@DrawSegments}{%
+ \tkz@DrawSegments[]}}
+\def\tkz@DrawSegments[#1](#2){%
+\def\tkz@optseg{#1}
+\begingroup
+ \let\next\tkz@multiDrawSeg
+ \next#2 \@nil %
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Mark Segment
+%<--------------------------------------------------------------------------–>
+\pgfkeys{
+ /@tkzmarkoptions/.cd,
+ pos/.store in = \tkz@mkpos,
+ color/.store in = \tkz@mkcolor,
+ mark/.store in = \tkz@markseg,
+ size/.store in = \tkz@mksize,
+ size = 4pt,
+ color = \tkz@mk@color,
+ pos = .5,
+ mark = |,
+ /@tkzmarkoptions/.search also={/tikz},
+}
+\def\tkzMarkSegment{\pgfutil@ifnextchar[{\tkz@MarkSegment}{\tkz@MarkSegment[]}}
+\def\tkz@MarkSegment[#1](#2,#3){%
+\begingroup
+ \pgfqkeys{/@tkzmarkoptions}{#1}
+\def\tkz@mymark{\pgfsetplotmarksize{\tkz@mksize}\pgfuseplotmark{\tkz@markseg}}
+\begin{scope}
+ [decoration={markings,mark=at position \tkz@mkpos with {\tkz@mymark}}]
+ \path [\tkz@mkcolor,/@tkzmarkoptions/.cd,#1,postaction={decorate}] (#2) -- (#3);
+\end{scope}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% multiple
+\def\tkz@multiMS#1 #2\@nil{%
+ \protected@edef\tkz@temp{
+ \noexpand \tkzMarkSegment[\tkz@optsg](#1)}\tkz@temp%
+ \def\tkz@nextArg{#2}%
+ \ifx\tkzutil@empty\tkz@nextArg
+ \let\next\@gobble
+ \fi
+ \next#2\@nil
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzMarkSegments{\pgfutil@ifnextchar[{\tkz@MarkSegments}{\tkz@MarkSegments[]}}
+\def\tkz@MarkSegments[#1](#2){%
+\def\tkz@optsg{#1}
+ \begingroup
+ \let\next\tkz@multiMS
+ \next#2 \@nil %
+\endgroup
+}
+%<-------------------------------------------------------------------------–>
+% Label on segment
+%<-------------------------------------------------------------------------–>
+\def\tkzLabelSegment{\pgfutil@ifnextchar[{\tkz@LabelSegment}%
+ {\tkz@LabelSegment[]}}
+\def\tkz@LabelSegment[#1](#2,#3)#4{%
+\begingroup
+ \path (#2) to node[label seg style,#1]{#4} (#3) ;
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% multiple
+\def\tkz@multiLS#1 #2\@nil{%
+ \protected@edef\tkz@temp{
+ \noexpand \tkzLabelSegment[\tkz@optls](#1){\tkz@labelseg}}\tkz@temp%
+ \def\tkz@nextArg{#2}%
+ \ifx\tkzutil@empty\tkz@nextArg
+ \let\next\@gobble
+ \fi
+ \next#2\@nil
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzLabelSegments{\pgfutil@ifnextchar[{\tkz@LabelSegments}{%
+ \tkz@LabelSegments[]}}
+\def\tkz@LabelSegments[#1](#2)#3{%
+\def\tkz@optls{#1}
+\def\tkz@labelseg{#3}
+ \begingroup
+ \let\next\tkz@multiLS
+ \next#2 \@nil %
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% PolySeg
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawPolySeg{\pgfutil@ifnextchar[{\tkz@DrawPolySeg}{%
+ \tkz@DrawPolySeg[]}}
+\def\tkz@DrawPolySeg[#1](#2,#3){%
+\begingroup
+\draw[line style,#1] (#2)
+ \foreach \po in {#3}{--(\po)};%
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% add dim
+ % \draw[dim={5cm,7pt,}] (A) -- (B);
+ % \draw[dim={7cm,10pt,transform shape}] (B) -- (C);
+ % \draw[dim={X,,}] (A) -- (C);
+%<--------------------------------------------------------------------------–>
+\pgfkeys{/pgf/decoration/.cd, distance/.initial = 10pt}
+
+\pgfdeclaredecoration{add dim}{final}{
+\state{final}{%
+\pgfmathsetmacro{\dist}{\pgfkeysvalueof{/pgf/decoration/distance}}
+ \pgfpathmoveto{\pgfpoint{0pt}{0pt}}
+ \pgfpathlineto{\pgfpoint{0pt}{1.2*\dist}}
+ \pgfpathmoveto{\pgfpoint{\pgfdecoratedpathlength}{0pt}}
+ \pgfpathlineto{\pgfpoint{(\pgfdecoratedpathlength}{1.2*\dist}}
+ \pgfsetarrowsstart{latex}
+ \pgfsetarrowsend{latex}
+ \pgfpathmoveto{\pgfpoint{0pt}{\dist}}
+ \pgfpathlineto{\pgfpoint{\pgfdecoratedpathlength}{\dist}}
+ \pgfusepath{stroke}
+ \pgfpathmoveto{\pgfpoint{0pt}{0pt}}
+ \pgfpathlineto{\pgfpoint{\pgfdecoratedpathlength}{0pt}}
+}}
+
+\tikzset{
+ dim/.style args={#1,#2,#3}{%
+ decoration = {add dim,distance=\ifx&#2&0pt\else#2\fi},
+ decorate,
+ postaction = {%
+ decorate,
+ decoration={%
+ raise=#2,
+ markings,
+ mark=at position .5 with {%
+ \node[inner sep=0pt,
+ font=\footnotesize,
+ fill=\tkz@fillcolor,
+ #3] at (0,0) {#1};}
+ }
+ }
+ },
+ dim/.default={,0pt,}
+}
+
+%<--------------------------- style line --------------------------------->
+\tikzset{add/.style args={#1 and #2}{to path={%
+ ($(\tikztostart)!-#1!(\tikztotarget)$)--($(\tikztotarget)!-#2!(\tikztostart)$)%
+ \tikztonodes}}
+}
+%<--------------------------------------------------------------------------–>
+\makeatother
+\endinput
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-polygons.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-polygons.tex
new file mode 100644
index 00000000000..49ce0c7021a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-draw-polygons.tex
@@ -0,0 +1,83 @@
+% tkz-obj-eu-polygons.tex
+% Copyright 2011 by Alain Matthes
+% This file may be distributed and/or modified
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+\typeout{2020/01/23 3.01c tkz-obj-eu-polygons.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% Polygon
+%<--------------------------------------------------------------------------–>
+%<---------------------------- Draw --------------------------------–>
+%
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawPolygon{\pgfutil@ifnextchar[{\tkz@DrawPolygon}{%
+ \tkz@DrawPolygon[]}}
+\def\tkz@DrawPolygon[#1](#2,#3){%
+ \begingroup
+ \draw[line style,#1] (#2)
+ \foreach \pt in {#2,#3}{--(\pt)}--cycle;%
+ \endgroup
+}
+%<---------------------------- FILL --------------------------------–>
+%
+%<--------------------------------------------------------------------------–>
+\def\tkzFillPolygon{\pgfutil@ifnextchar[{\tkz@FillPolygon}{%
+ \tkz@FillPolygon[]}}
+\def\tkz@FillPolygon[#1](#2,#3){%
+ \begingroup
+ \fill[#1] (#2)
+ \foreach \pt in {#2,#3}{--(\pt)}--cycle;%
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawSquare{\pgfutil@ifnextchar[{\tkz@DrawSquare}{\tkz@DrawSquare[]}}
+\def\tkz@DrawSquare[#1](#2,#3){%
+\begingroup
+ \tkzDefSquare(#2,#3)
+ \tkzDrawPolygon[#1](#2,#3,tkzFirstPointResult,tkzSecondPointResult)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDrawRectangle{\pgfutil@ifnextchar[{\tkz@DrawRectangle}%
+ {\tkz@DrawRectangle[]}}
+\def\tkz@DrawRectangle[#1](#2,#3){%
+\begingroup
+ \draw[#1](#2) -| (#3) -| (#2);
+\endgroup
+}
+%<-------------------------- gold rectangle -------------------------------–>
+%
+%<--------------------------------------------------------------------------–>
+\def\tkz@DrawGoldRectangle[#1](#2,#3){
+\begingroup
+ \tkzDefGoldRectangle(#2,#3)
+ \tkzDrawPolygon[#1](#2,#3,tkzFirstPointResult,tkzSecondPointResult)
+\endgroup
+}
+%<-------------- Labels for Regular Polygon -------------------------–>
+%
+%<--------------------------------------------------------------------------–>
+\pgfkeys{/deflabelregpoly/.cd,
+ name/.store in = \tkz@regpolname,
+ sep/.store in = \tkz@regpolsep,
+ name = P,
+ sep = 1.1
+}
+
+\def\tkzLabelRegPolygon{\pgfutil@ifnextchar[{\tkz@labelPolygon}{%
+ \tkz@labelPolygon[]}}
+\def\tkz@labelPolygon[#1](#2)#3{%
+\begingroup
+\pgfqkeys{/deflabelregpoly}{#1}
+ \foreach \v [count=\vi from 1] in {#3} {%
+ \path (#2) to [pos=1.1] node {$\v$} (\tkz@regpolname\vi) ;
+ \pgfnodealias{\v}{\tkz@regpolname\vi}
+ }
+\endgroup
+}
+
+\makeatother
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lines.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lines.tex
new file mode 100644
index 00000000000..ee12e06d8aa
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-lines.tex
@@ -0,0 +1,207 @@
+% tkz-obj-eu-lines.tex
+% Copyright 2011 by Alain Matthes
+% This file may be distributed and/or modified
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+\typeout{2020/01/23 3.01c tkz-obj-eu-lines.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% les lignes
+%<--------------------------------------------------------------------------–>
+\def\tkz@numl{0}
+\pgfkeys{/tkzDefLine/.cd,
+ mediator/.code = \def\tkz@numl{0},
+ perpendicular/.code args = {through #1} {\def\tkz@numl{1}%
+ \def\tkz@through{#1}},
+ orthogonal/.code args = {through #1} {\def\tkz@numl{1}%
+ \def\tkz@through{#1}},
+ parallel/.code args = {through #1}{\def\tkz@numl{2}%
+ \def\tkz@through{#1}},
+ bisector/.code = \def\tkz@numl{3},
+ bisector out/.code = \def\tkz@numl{4},
+ symmedian/.code = \def\tkz@numl{5},
+ K/.code = \def\tkz@koeff{#1},
+ K = 1,
+ normed/.is if = tkz@line@normed,
+ normed/.default = true,
+ normed = false
+}
+
+\def\tkzDefLine{\pgfutil@ifnextchar[{\tkz@DefLine}{\tkz@DefLine[]}}
+\def\tkz@DefLine[#1](#2){%
+\begingroup
+\pgfkeys{/tkzDefLine/.cd,K=1}
+\pgfqkeys{/tkzDefLine}{#1}
+\ifcase\tkz@numl%
+ % first case 0
+ \tkzDefMediatorLine(#2)
+ \or% 1
+ \tkzDefOrthLine[\tkz@koeff](#2)(\tkz@through)
+ \or% 2
+ \tkzDefLineLL(#2)
+ \or% 3
+ \tkzDefBisectorLine(#2)
+ \or% 4
+ \tkzDefBisectorOutLine(#2)
+ \or% 5
+ \tkzDefSymmedianLine(#2)
+ \fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% tkzLineLL revoir out !!
+%<--------------------------------------------------------------------------–>
+\def\tkzDefLineLL(#1,#2){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#1}{center}}{\pgfpointanchor{#2}{center}}%
+ \pgf@xa=\pgf@x\relax%%
+ \pgf@ya=\pgf@y\relax%%
+ \pgfinterruptboundingbox
+ \path[coordinate](\tkz@through)--++(\pgf@xa,\pgf@ya)%
+ coordinate (tkzPointResult);
+ \endpgfinterruptboundingbox
+ \iftkz@line@normed
+ \tkzVecKNorm(\tkz@through,tkzPointResult)
+ \fi
+\endgroup}%
+%<--------------------------------------------------------------------------–>
+% tkzOrthLine
+%<--------------------------------------------------------------------------–>
+\def\tkzDefOrthLine{\pgfutil@ifnextchar[{\tkz@DefOrthLine}{%
+ \tkz@DefOrthLine[1]}}
+\def\tkz@DefOrthLine[#1](#2,#3)(#4){%
+\begingroup
+ \tkzVecKOrth(#2,#3)
+ \pgfnodealias{tkz@OLtmp}{tkzPointResult}
+ \tkz@VecKCoLinear[#1](#2,tkz@OLtmp,#4)
+ \iftkz@line@normed
+ \pgfinterruptboundingbox
+ \tkzVecKNorm(\tkz@through,tkzPointResult)
+ \endpgfinterruptboundingbox
+ \fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% tkzMediatorLine
+%<--------------------------------------------------------------------------–>
+\def\tkzDefMediatorLine(#1,#2){% new 2020
+\begingroup
+ \tkzDefEquilateral(#1,#2)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkzDefEquilateral(#2,#1)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+ \iftkz@line@normed
+ \tkzDefMidPoint(#1,#2)
+ \pgfnodealias{tkz@mid}{tkzPointResult}
+ \pgfinterruptboundingbox
+ \tkzVecKNorm(tkz@mid,tkzFirstPointResult)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkzVecKNorm(tkz@mid,tkzSecondPointResult)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+ \endpgfinterruptboundingbox
+\fi
+\endgroup
+}
+% autre possibilité
+
+%<--------------------------------------------------------------------------–>
+% BisectorLine % pb avec un angle plat
+%<--------------------------------------------------------------------------–>
+\def\tkzDefBisectorLine(#1,#2,#3){%
+\begingroup
+ \pgfinterruptboundingbox
+ \tkzDuplicateLength(#2,#1)(#2,#3)
+ \pgfnodealias{bi@tmp}{tkzPointResult}
+ \tkzDefEquilateral(bi@tmp,#1)
+ \iftkz@line@normed
+ \tkzVecKNorm(#2,tkzPointResult)
+ \fi
+ \endpgfinterruptboundingbox
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Out BisectorLine
+%<--------------------------------------------------------------------------–>
+\def\tkzDefBisectorOutLine(#1,#2,#3){%
+\begingroup
+ \pgfinterruptboundingbox
+ \tkzDuplicateLength(#2,#1)(#2,#3)
+ \pgfnodealias{out@tmp}{tkzPointResult}
+ \tkzDefMidPoint(#1,out@tmp)
+ \pgfnodealias{out@pt1}{tkzPointResult}
+ \tkzURotateAngle(#2,90)(out@pt1)
+ \iftkz@line@normed
+ \tkzVecKNorm(#2,tkzPointResult)
+ \fi
+ \endpgfinterruptboundingbox
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Symmedian line
+%<--------------------------------------------------------------------------–>
+\def\tkzDefSymmedianLine(#1,#2,#3){%
+\begingroup
+ \tkzDefBisectorLine(#1,#2,#3)
+ \pgfnodealias{sym@pt1}{tkzPointResult}
+ \tkzDefMidPoint(#1,#3)
+ \pgfnodealias{sym@pt2}{tkzPointResult}
+ \tkzUSymOrth(#2,sym@pt1)(sym@pt2)
+\endgroup
+}
+%<-------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% tangente à cercle passant par un point donné
+%<--------------------------------------------------------------------------–>
+\def\tkzTgtFromPR(#1,#2)(#3){%
+ \begingroup
+ \tkzDefMidPoint(#1,#3)
+ \tkzCalcLength(tkzPointResult,#1)
+ \tkzInterCCR(#1,#2)(tkzPointResult,\tkzLengthResult pt){%
+ tkzFirstPointResult}{%
+ tkzSecondPointResult}%
+ \endgroup
+}
+
+\def\tkzTgtFromP(#1,#2)(#3){%
+ \begingroup
+ \tkzDefMidPoint(#1,#3)
+ \tkzCalcLength(#1,#2)
+ \tkzGetLength{tkz@radone}%
+ \tkzCalcLength(tkzPointResult,#1)
+ \tkzGetLength{tkz@radtwo}%
+ \tkzInterCCR(#1,\tkz@radone pt)(tkzPointResult,\tkz@radtwo pt){%
+ tkzFirstPointResult}{%
+ tkzSecondPointResult}%
+ \endgroup
+}
+\def\tkzTgtAt(#1)(#2){%
+\begingroup
+ \tkz@VecKOrthNorm[-1](#2,#1)
+ \endgroup
+} %<--------------------------------------------------------------------------–> %<--------------------------------------------------------------------------–>
+\def\tkz@numtang{0}
+\pgfkeys{/tkz@tang/.cd,
+ at/.code = {\def\tkz@numtang{0}\def\tkz@ptat{#1}},
+ from/.code = {\def\tkz@numtang{1}\def\tkz@ptfrom{#1}},
+ from with R/.code = {\def\tkz@numtang{2}\def\tkz@ptfrom{#1}}
+ }
+%<--------------------------------------------------------------------------–>
+\def\tkzDefTangent{\pgfutil@ifnextchar[{\tkz@Tangent}{\tkz@Tangent[]}}
+
+\def\tkz@Tangent[#1](#2){%
+\begingroup
+\pgfkeys{tkz@tang/.cd}
+\pgfqkeys{/tkz@tang}{#1}
+\ifcase\tkz@numtang
+ \tkzTgtAt(#2)(\tkz@ptat)
+\or
+ \tkzTgtFromP(#2)(\tkz@ptfrom)
+ \or
+ \tkzTgtFromPR(#2)(\tkz@ptfrom)
+\fi
+\endgroup
+}
+\makeatother
+\endinput
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex
new file mode 100644
index 00000000000..bf8793ad093
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-by.tex
@@ -0,0 +1,402 @@
+% tkz-tools-eu-points-by.tex
+% Copyright 2011 by Alain Matthes
+% This file may be distributed and/or modified
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+\typeout{2020/01/23 3.01c tkz-tools-eu-points-by.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% Transformations Géométriques
+%<--------------------------------------------------------------------------–>
+\def\tkz@numtrsf{0}
+\pgfkeys{/tkzDefPointBy/.cd,
+translation/.code args={from #1 to #2}{%
+ \def\tkzfrom{#1}%
+ \def\tkzto{#2}%
+ \def\tkz@numtrsf{0}},
+ homothety/.code args={center #1 ratio #2}{%
+ \def\tkzcenter{#1}%
+ \def\tkzratio{#2}%
+ \def\tkz@numtrsf{1}},
+ reflection/.code args={over #1--#2}{%
+ \def\tkzdeb{#1}%
+ \def\tkzfin{#2}%
+ \def\tkz@numtrsf{2}},
+ symmetry/.code args={center #1}{%
+ \def\tkzcenter{#1}%
+ \def\tkz@numtrsf{3}},
+ projection/.code args={onto #1--#2}{%
+ \def\tkzdeb{#1}%
+ \def\tkzfin{#2}%
+ \def\tkz@numtrsf{4}},
+ rotation/.code args={center #1 angle #2}{%
+ \def\tkzcenter{#1}%
+ \def\tkzangle{#2}%
+ \def\tkz@numtrsf{5}},
+ rotation in rad/.code args={center #1 angle #2}{%
+ \def\tkzcenter{#1}%
+ \def\tkzangle{#2}%
+ \def\tkz@numtrsf{6}},
+inversion/.code args={center #1 through #2}{%
+ \def\tkzcenter{#1}%
+ \def\tkzpoint{#2}%
+ \def\tkz@numtrsf{7}}
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDefPointBy{\pgfutil@ifnextchar[{\tkz@DefPointBy}{\tkz@DefPointBy[]}}
+\def\tkz@DefPointBy[#1](#2){%
+\begingroup
+\pgfqkeys{/tkzDefPointBy}{#1}
+ \ifcase\tkz@numtrsf%
+% % first case 0
+ \tkzUTranslation(\tkzfrom,\tkzto)(#2)
+\or% 1
+ \tkzUHomo(\tkzcenter,\tkzratio)(#2)
+\or% 2
+ \tkzUSymOrth(\tkzdeb,\tkzfin)(#2)
+\or% 3
+ \tkzUCSym(\tkzcenter)(#2)
+\or% 4
+ \tkzUProjection(\tkzdeb,\tkzfin)(#2)
+\or% 5
+ \tkzURotateAngle(\tkzcenter,\tkzangle)(#2)
+\or% 6
+ \tkzURotateInRad(\tkzcenter,\tkzangle)(#2)
+\or% 7
+ \tkzUInversePoint(\tkzcenter,\tkzpoint)(#2)
+\fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzDefPointsBy{\pgfutil@ifnextchar[{\tkz@DefPointsBy}{\tkz@DefPointsBy[]}}
+\def\tkz@DefPointsBy[#1](#2)#3{%
+\begingroup
+\pgfqkeys{/tkzDefPointBy}{#1}
+\ifcase\tkz@numtrsf%
+ % first case 0
+ \tkzTranslation(\tkzfrom,\tkzto)(#2){#3}
+ \or% 1
+ \tkzHomo(\tkzcenter,\tkzratio)(#2){#3}
+ \or% 2
+ \tkzSymOrth(\tkzdeb,\tkzfin)(#2){#3}
+ \or% 3
+ \tkzCSym(\tkzcenter)(#2){#3}
+ \or% 4
+ \tkzProjection(\tkzdeb,\tkzfin)(#2){#3}
+ \or% 5
+ \tkzRotateAngle(\tkzcenter,\tkzangle)(#2){#3}
+ \or% 6
+ \tkzRotateInRad(\tkzcenter,\tkzangle)(#2){#3}
+ \or% 7
+ \tkzInversePoint(\tkzcenter,\tkzpoint)(#2){#3}
+\fi
+\endgroup
+}
+
+%<--------------------------------------------------------------------------–>
+
+\def\ExtractPoint#1,#2\@nil{%
+\xdef\tkz@LastList{#2}
+\xdef\tkz@FirstPoint{#1}
+}
+\def\FirstPointInList#1{%
+\edef\tkz@templist{#1,}
+\expandafter\ExtractPoint\tkz@templist\@nil
+}
+%<--------------------------------------------------------------------------–>
+% Translation par rapport à un point
+%<--------------------------------------------------------------------------–>
+\def\tkzTranslation(#1,#2)(#3)#4{%
+\begingroup
+\gdef\tkz@LastList{#4}
+\foreach\PT in {#3}{%
+ \FirstPointInList\tkz@LastList
+ \ifx\tkz@FirstPoint\tkzutil@empty
+ \def\tkz@pointtsf{\PT '}
+ \else
+ \def\tkz@pointtsf{\tkz@FirstPoint}
+ \fi
+ \tkz@VecCoLinear(#1,#2,\PT)
+ \pgfnodealias{\tkz@pointtsf}{tkzPointResult}
+ }
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzUTranslation(#1,#2)(#3){%
+\begingroup
+ \tkz@VecCoLinear(#1,#2,#3)%
+\endgroup
+}
+
+%<--------------------------------------------------------------------------–>
+% Symétrie par rapport à un point Homo with (-1)
+% #2 le centre #3 l'antécédent
+%<--------------------------------------------------------------------------–>
+\def\tkzCSym(#1)(#2)#3{%
+\begingroup
+\gdef\tkz@LastList{#3}
+ \foreach\PointCS in {#2}{%
+ \FirstPointInList\tkz@LastList
+ \ifx\tkz@FirstPoint\tkzutil@empty
+ \xdef\tkz@pointtsf{\PointCS '}
+ \else
+ \xdef\tkz@pointtsf{\tkz@FirstPoint}
+ \fi
+ \pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{\PointCS}{center}}%
+ \tkz@ax=\pgf@x%
+ \tkz@ay=\pgf@y%
+ \path(#1)--++(-\tkz@ax,-\tkz@ay)coordinate (\tkz@pointtsf);
+}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzUCSym(#1)(#2){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#2}{center}}%
+ \tkz@ax=\pgf@x%
+ \tkz@ay=\pgf@y%
+ \path(#1)--++(-\tkz@ax,-\tkz@ay)coordinate (tkzPointResult);
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Symétrie orthogonale par rapport à une droite
+%<--------------------------------------------------------------------------–>
+\def\tkzSymOrth(#1,#2)(#3)#4{%
+\begingroup
+\gdef\tkz@LastList{#4}
+ \foreach\PointSO in {#3}{%
+ \FirstPointInList\tkz@LastList
+ \ifx\tkz@FirstPoint\tkzutil@empty
+ \def\tkz@pointtsf{\PointSO '}
+ \else
+ \def\tkz@pointtsf{\tkz@FirstPoint}
+ \fi
+ \tkzUSymOrth(#1,#2)(\PointSO)
+ \pgfnodealias{\tkz@pointtsf}{tkzPointResult}
+ }
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzUSymOrth(#1,#2)(#3){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#2}{center}}%
+ \tkz@ax =\pgf@y%
+ \tkz@ay =\pgf@x%
+ \path[coordinate]%
+ (#3)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point);
+ \tkzInterLL(#1,#2)(#3,tkz@point)
+ \pgfnodealias{tkzPointofSym}{tkzPointResult}
+ \tkz@VecK[2](#3,tkzPointofSym)
+\endgroup
+}
+
+%<--------------------------------------------------------------------------–>
+% Projection orthogonale sur une droite
+%<--------------------------------------------------------------------------–>
+\def\tkzProjection(#1,#2)(#3)#4{%
+\begingroup
+\gdef\tkz@LastList{#4}
+ \foreach\PointPJ in {#3}{%
+ \FirstPointInList\tkz@LastList
+ \ifx\tkz@FirstPoint\tkzutil@empty
+ \def\tkz@pointtsf{\PointPJ '}
+ \else
+ \def\tkz@pointtsf{\tkz@FirstPoint}
+ \fi
+ \tkzUProjection(#1,#2)(\PointPJ)
+ \pgfnodealias{\tkz@pointtsf}{tkzPointResult}
+ }
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzUProjection(#1,#2)(#3){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#2}{center}}%
+ \tkz@ax =\pgf@y%
+ \tkz@ay =\pgf@x%
+ \pgfinterruptboundingbox
+ \path[coordinate](#3)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point);
+ \tkzInterLL(#1,#2)(#3,tkz@point)% définit tkzPointResult
+ \endpgfinterruptboundingbox
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkz@Projection(#1,#2)(#3)#4{%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#2}{center}}%
+ \tkz@ax =\pgf@y%
+ \tkz@ay =\pgf@x%
+ \pgfinterruptboundingbox
+ \path[coordinate](#3)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point);
+ \endpgfinterruptboundingbox
+ \tkz@InterLL(#1,#2)(#3,tkz@point){#4}% définit tkzPointResult
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Homothétie par rapport à un point
+%<--------------------------------------------------------------------------–>
+\def\tkzHomo(#1,#2)(#3)#4{%
+\begingroup
+\gdef\tkz@LastList{#4}
+ \foreach\PointHO in {#3}{%
+ \FirstPointInList\tkz@LastList
+ \ifx\tkz@FirstPoint\tkzutil@empty
+ \xdef\tkz@pointtsf{\PointHO '}
+ \else
+ \xdef\tkz@pointtsf{\tkz@FirstPoint}
+ \fi
+ \pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{\PointHO}{center}}%
+ \pgf@xa=\pgf@x%
+ \pgf@ya=\pgf@y%
+ \pgfmathparse{#2}\edef\tkz@coeff{\pgfmathresult}%
+ \path[coordinate](#1)--++(\tkz@coeff\pgf@xa,\tkz@coeff\pgf@ya)%
+ coordinate(\tkz@pointtsf);
+ }
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzUHomo(#1,#2)(#3){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#3}{center}}%
+ \pgf@xa=\pgf@x%
+ \pgf@ya=\pgf@y%
+ \pgfmathparse{#2}\edef\tkz@coeff{\pgfmathresult}%
+ \path[coordinate](#1)--++(\tkz@coeff\pgf@xa,\tkz@coeff\pgf@ya)%
+ coordinate(tkzPointResult);
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% rotation en degré
+%<--------------------------------------------------------------------------–>
+\def\tkzRotateAngle(#1,#2)(#3)#4{%
+\begingroup
+\gdef\tkz@LastList{#4}
+ \foreach\PointRot in {#3}{%
+ \FirstPointInList\tkz@LastList
+ \ifx\tkz@FirstPoint\tkzutil@empty
+ \def\tkz@pointtsf{\PointRot '}
+ \else
+ \def\tkz@pointtsf{\tkz@FirstPoint}
+ \fi
+ \tkz@@extractxy{\PointRot}
+ \tkz@ax\pgf@x%
+ \tkz@ay\pgf@y%
+ \tkz@@extractxy{#1}
+ \tkz@bx\pgf@x%
+ \tkz@by\pgf@y%
+ \pgfmathrotatepointaround{\pgfpoint{\tkz@ax}{\tkz@ay}}%
+ {\pgfpoint{\tkz@bx}{\tkz@by}}%
+ {#2}
+ \tkz@bx\pgf@x%
+ \tkz@by\pgf@y%
+ \path[coordinate](\tkz@bx,\tkz@by)coordinate(\tkz@pointtsf);%
+ }
+ \endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzURotateAngle(#1,#2)(#3){%
+\begingroup
+ \pgf@process{\pgfpointanchor{#3}{center}}%
+ \tkz@ax\pgf@x%
+ \tkz@ay\pgf@y%
+ \pgf@process{\pgfpointanchor{#1}{center}}%
+ \tkz@bx\pgf@x%
+ \tkz@by\pgf@y%
+ \pgfmathrotatepointaround{\pgfpoint{\tkz@ax}{\tkz@ay}}%
+ {\pgfpoint{\tkz@bx}{\tkz@by}}%
+ {#2}
+ \tkz@bx\pgf@x%
+ \tkz@by\pgf@y%
+ \path (\tkz@bx,\tkz@by) coordinate (tkzPointResult);%
+ \endgroup
+}
+%<--------------------------------------------------------------------------–>
+% % rotation en radian
+% %<--------------------------------------------------------------------------–>
+\def\tkzRotateInRad(#1,#2)(#3)#4{%
+\begingroup
+\gdef\tkz@LastList{#4}
+ \foreach\PointRot in {#3}{%
+ \FirstPointInList\tkz@LastList
+ \ifx\tkz@FirstPoint\tkzutil@empty
+ \xdef\tkz@pointtsf{\PointRot '}
+ \else
+ \xdef\tkz@pointtsf{\tkz@FirstPoint}
+ \fi
+ \pgfmathparse{#2 r}
+ \let\tkz@Angle\pgfmathresult
+ \tkz@@extractxy{\PointRot}
+ \tkz@ax\pgf@x%
+ \tkz@ay\pgf@y%
+ \tkz@@extractxy{#1}
+ \tkz@bx\pgf@x%
+ \tkz@by\pgf@y%
+ \pgfmathrotatepointaround{\pgfpoint{\tkz@ax}{\tkz@ay}}%
+ {\pgfpoint{\tkz@bx}{\tkz@by}}%
+ {\tkz@Angle}
+ \tkz@bx\pgf@x%
+ \tkz@by\pgf@y%
+ \path[coordinate](\tkz@bx,\tkz@by)coordinate(\tkz@pointtsf);
+}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzURotateInRad(#1,#2)(#3){%
+\begingroup
+ \pgfmathparse{#2 r}
+ \let\tkz@Angle\pgfmathresult
+ \tkz@@extractxy{#3}
+ \tkz@ax\pgf@x%
+ \tkz@ay\pgf@y%
+ \tkz@@extractxy{#1}
+ \tkz@bx\pgf@x%
+ \tkz@by\pgf@y%
+ \pgfmathrotatepointaround{\pgfpoint{\tkz@ax}{\tkz@ay}}%
+ {\pgfpoint{\tkz@bx}{\tkz@by}}%
+ {\tkz@Angle}
+ \tkz@bx\pgf@x%
+ \tkz@by\pgf@y%
+ \path[coordinate](\tkz@bx,\tkz@by)coordinate(tkzPointResult);
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Inverse of a point
+%<--------------------------------------------------------------------------–>
+\def\tkzInversePoint(#1,#2)(#3)#4{%
+\begingroup
+\gdef\tkz@LastList{#4}
+ \foreach\PointIP in {#3}{%
+ \FirstPointInList\tkz@LastList
+ \ifx\tkz@FirstPoint\tkzutil@empty
+ \xdef\tkz@pointtsf{\PointIP '}
+ \else
+ \xdef\tkz@pointtsf{\tkz@FirstPoint}
+ \fi
+ \tkzCalcLength[cm](#1,\PointIP)\tkzGetLength{tkz@lnb}%
+ \edef\tkz@lnc{\fpeval{1/\tkz@lnb}}
+ \tkzVecKNorm[\tkz@lnb](#1,\PointIP)
+ }
+\endgroup
+}
+\def\tkzUInversePoint(#1,#2)(#3){%
+\begingroup
+ \tkzCalcLength[cm](#1,#3)\tkzGetLength{tkz@lnb}%
+ \edef\tkz@lnc{\fpeval{1/\tkz@lnb}}
+ \tkzVecKNorm[\tkz@lnc](#1,#3)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Fin des transformations
+%<--------------------------------------------------------------------------–>
+
+ \makeatother
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex
new file mode 100644
index 00000000000..ca072cd66dd
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-rnd.tex
@@ -0,0 +1,114 @@
+% tkz-obj-eu-points-rnd.tex
+% Copyright 2011 by Alain Matthes
+%
+% This file may be distributed and/or modified
+%
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+\typeout{2020/01/23 3.01c tkz-obj-eu-points-rnd.tex}
+%<--------------------------------------------------------------------------–>
+\makeatletter
+%<-------------------------------------------------------------------------–>
+% Points aléatoires sur un segment, une droite, une demi-droite un cercle
+%<--------------------------------------------------------------------------–>
+% les points aléatoires
+%<--------------------------------------------------------------------------–>
+\def\tkz@numrp{0}
+\pgfkeys{/@tkzDefRandPoint/.cd,
+ rectangle/.code args = {#1 and #2}{\def\tkz@numrp{0}%
+ \def\tkz@infl{#1}%
+ \def\tkz@supr{#2}},
+ segment/.code args = {#1--#2}{\def\tkz@numrp{1}%
+ \def\tkz@start{#1}%
+ \def\tkz@end{#2}},
+ line/.code args = {#1--#2}{\def\tkz@numrp{2}%
+ \def\tkz@start{#1}%
+ \def\tkz@end{#2}},
+ circle/.code args = {center #1 radius #2}{\def\tkz@numrp{3}%
+ \def\tkz@center{#1}
+ \def\tkz@rad{#2}},
+ circle through/.code args = {center #1 through #2}{\def\tkz@numrp{4}%
+ \def\tkz@center{#1}
+ \def\tkz@point{#2}},
+ disk through/.code args = {center #1 through #2}{\def\tkz@numrp{5}%
+ \def\tkz@center{#1}
+ \def\tkz@point{#2}},
+}
+%<------------------------ version 2019 ---------------------------------->
+\def\tkzDefRandPointOn{\pgfutil@ifnextchar[{\tkz@DefRandPointOn}{%
+ \tkz@DefRandPointOn[]}}
+\def\tkz@DefRandPointOn[#1]{%
+\begingroup
+\pgfqkeys{/@tkzDefRandPoint}{#1}
+\ifcase\tkz@numrp%
+ % first case 0
+ \tkzRandPointOnRect(\tkz@infl,\tkz@supr)
+ \or% 1
+ \tkzRandPointOnSegment(\tkz@start,\tkz@end)
+ \or% 2
+ \tkzRandPointOnLine(\tkz@start,\tkz@end)
+ \or% 3
+ \tkzRandPointOnCircle(\tkz@center,\tkz@rad)
+ \or% 4
+ \tkzRandPointOnCircleThrough(\tkz@center,\tkz@point)
+ \or% 5
+ \tkzRandPointOnDisk(\tkz@center,\tkz@point)
+\fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzRandPointOnRect(#1,#2){%
+\tkz@@extractxy{#1}
+ \pgf@xa=\pgf@x\relax%
+ \pgf@ya=\pgf@y\relax%
+ \tkz@@extractxy{#2}
+ \pgf@xb=\pgf@x\relax%
+ \pgf@yb=\pgf@y\relax%
+ \edef\tkz@a{\fpeval{\pgf@xb-\pgf@xa}}
+ \edef\tkz@b{\fpeval{\pgf@yb-\pgf@ya}}
+ \pgfmathparse{rnd}\global\let\tkzrndone\pgfmathresult
+ \pgfmathparse{rnd}\global\let\tkzrndtwo\pgfmathresult
+ \path[coordinate] ($(#1)+(\tkzrndone*\tkz@a pt,\tkzrndtwo*\tkz@b pt)$) coordinate (tkzPointResult);
+ }
+%<--------------------------------------------------------------------------–>
+\def\tkzRandPointOnSegment(#1,#2){%
+ \pgfmathparse{rnd}
+ \let\myrnd\pgfmathresult
+\path[coordinate] ($ (#1)!\myrnd!(#2) $) coordinate (tkzPointResult);
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzRandPointOnLine(#1,#2){%
+ \pgfmathparse{rand}
+ \let\myrnd\pgfmathresult
+\path[coordinate] ($ (#1)!\myrnd!(#2) $) coordinate (tkzPointResult);
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzRandPointOnCircle(#1,#2){%
+\pgfmathrandominteger{\tkzrnd}{0}{360}
+\tkz@ax#2 %
+ \edef\tkz@xa{\fpeval{\tkz@ax*cosd(\tkzrnd)}}
+ \edef\tkz@xb{\fpeval{\tkz@ax*sind(\tkzrnd)}}
+ \path[coordinate]($(#1) + (\tkz@xa pt,\tkz@xb pt) $) coordinate (tkzPointResult);
+}
+\def\tkzRandPointOnCircleThrough(#1,#2){%
+\pgfmathrandominteger{\tkzrnd}{0}{360}
+\tkzCalcLength(#1,#2)
+ \edef\tkz@xa{\fpeval{\tkzLengthResult*cosd(\tkzrnd)}}
+ \edef\tkz@xb{\fpeval{\tkzLengthResult*sind(\tkzrnd)}}
+\path[coordinate]($(#1) + (\tkz@xa pt ,\tkz@xb pt) $) coordinate (tkzPointResult);
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzRandPointOnDisk(#1,#2){%
+ \pgfmathrandominteger{\tkzrnd}{0}{360}
+ \tkzCalcLength(#1,#2)
+ \edef\tkz@xa{\fpeval{\tkzLengthResult*cosd(\tkzrnd)}}
+ \edef\tkz@xb{\fpeval{\tkzLengthResult*sind(\tkzrnd)}}
+ \path[coordinate]($(#1) + (\tkz@xa pt ,\tkz@xb pt) $) coordinate (tkz@tmp);
+ \pgfmathparse{rnd}
+ \let\myrnd\pgfmathresult
+ \path[coordinate] ($ (#1)!\myrnd!(tkz@tmp) $) coordinate (tkzPointResult);
+}
+\makeatother
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-with.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-with.tex
new file mode 100644
index 00000000000..d73a1ce8cb4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points-with.tex
@@ -0,0 +1,248 @@
+% tkz-obj-eu-points-with.tex
+% Copyright 2011 by Alain Matthes
+% This file may be distributed and/or modified
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+\typeout{2020/01/23 3.01c tkz-obj-eu-points-with.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% Vectors
+%<--------------------------------------------------------------------------–>
+% Objet : outils mathématiques pour la géométrie euclideienne avec pgf/tikz
+% utilisable de préférence avec un repère orthonormé et le cm comme unité
+% utile pour la compatibilité avec pgf 2
+%<--------------------------------------------------------------------------–>
+% Duplicate Length à revoir pas de pt pas de global
+% ||v(CN)||= ||v(AB)|| et v(CN) colineaire à v(CD)
+% A-->#1 B-->#2 C-->#3 D-->#4 N-->#5 ?????
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% Outils pour les vecteurs
+%<--------------------------------------------------------------------------–>
+% ce sont des outils élémentaires qui à partir de deux points en définissent
+% un troisième
+% #1 si c'est une option alors c'est un nombre réel
+% #2 et #3 sont deux points
+% #4 est le nom du point qui résulte de la transformation
+% exemple : \tkzVecKNorm (A,B){C} définit un point C tel que AC = 1 et C est % % un point de la droite (AC). #1 peut être négatif
+
+\def\tkzDuplicateSegment(#1,#2)(#3,#4){%
+\begingroup
+ \tkzCalcLength(#1,#2)\tkzGetLength{tkz@firstlen}%
+ \tkzCalcLength(#3,#4)\tkzGetLength{tkz@secondlen}%
+ \edef\tkz@ratio{\fpeval{\tkz@firstlen/\tkz@secondlen}}
+ \tkz@VecKCoLinear[\tkz@ratio](#3,#4,#3)%
+\endgroup
+}
+\let\tkzDuplicateLength\tkzDuplicateSegment
+%<--------------------------------------------------------------------------–>
+% Coordonnées d'un vecteur (couple de points)
+% Deux points A et B donc un vecteur on récupère les coordonnées de v(AB)
+% en cm
+% tkzGetVecCoord en cm ou en pt ???
+%<--------------------------------------------------------------------------–>
+%result in #3x et #3y #1 et #2 sont les points
+% passage en cm avec fp ?
+% 28.45274 =1 cm
+\def\tkzGetVectxy(#1,#2)#3{%
+\begingroup
+\pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#2}{center}}%
+\pgfmathparse{\pgf@sys@tonumber{\pgf@x}/1cm}%
+\let\tkzresultx\pgfmathresult
+\pgfmathparse{\pgf@sys@tonumber{\pgf@y}/1cm}%
+\let\tkzresulty\pgfmathresult
+\global\expandafter\edef\csname #3x\endcsname{\tkzresultx}%
+\global\expandafter\edef\csname #3y\endcsname{\tkzresulty}%
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% options #1 two points #2,#3 result in #4
+%
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% tkzDefPointWith
+%<--------------------------------------------------------------------------–>
+\def\tkz@numv{0}
+\pgfkeys{/@pointwith/.cd,
+ colinear/.code args = {at #1}{\def\tkz@numv{0}\def\tkz@frompoint{#1}},
+ orthogonal/.code = {\def\tkz@numv{1}},
+ linear/.code = {\def\tkz@numv{2}},
+ orthogonal normed/.code = {\def\tkz@numv{3}},
+ linear normed/.code = {\def\tkz@numv{4}},
+ colinear normed/.code args = {at#1}{\def\tkz@numv{5}\def\tkz@frompoint{#1}},
+ K/.code = {\pgfmathparse{#1}\def\tkz@ratio{\pgfmathresult}},
+ K = 1,
+ orthogonal
+}
+\def\tkzDefPointWith[#1](#2,#3){%
+\begingroup
+\pgfkeys{/@pointwith/.cd,K=1}
+\pgfqkeys{/@pointwith}{#1}
+\ifcase\tkz@numv%
+ % first case 0
+ \tkz@DefVectorColinearat[\tkz@ratio](#2,#3)
+ \or% 1
+ \tkz@VecKOrth[\tkz@ratio](#2,#3)
+ \or% 2
+ \tkz@VecK[\tkz@ratio](#2,#3)
+ \or% 3
+ \tkz@VecKOrthNorm[\tkz@ratio](#2,#3)
+ \or% 4
+ \tkz@VecKNorm[\tkz@ratio](#2,#3)
+ \or% 5
+ \tkz@VecKColinearNorm[\tkz@ratio](#2,#3)
+ \fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% tkzDefVectorfrom
+%<--------------------------------------------------------------------------–>
+% tkz@numv 0
+\def\tkz@DefVectorColinearat[#1](#2,#3){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#3}{center}}%
+ \pgf@xa=\pgf@x\relax%
+ \pgf@ya=\pgf@y\relax%
+ \pgfinterruptboundingbox
+ \path (\tkz@frompoint)--++(\tkz@ratio\pgf@xa,\tkz@ratio\pgf@ya) coordinate (tkzPointResult);
+ \endpgfinterruptboundingbox
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% tkzVector K Orth coeff dans #1
+% v(AN) perp v(AB) v(AB) v(AN) sens direct cercle trigo
+% ||v(AN)||=||v(AB)||
+%<--------------------------------------------------------------------------–>
+% tkz@numv 1
+\def\tkzVecKOrth{\pgfutil@ifnextchar[{\tkz@VecKOrth}{\tkz@VecKOrth[1]}}
+\def\tkz@VecKOrth[#1](#2,#3){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#3}{center}}%
+ \pgf@xa=-\pgf@y%
+ \pgf@ya=\pgf@x%
+ \pgfmathparse{#1}
+ \let\tkz@coeff\pgfmathresult
+ \pgfinterruptboundingbox
+ \path (#2)--++(\tkz@coeff\pgf@xa,\tkz@coeff\pgf@ya) coordinate (tkzPointResult);
+ \endpgfinterruptboundingbox
+\endgroup
+}%
+
+%<--------------------------------------------------------------------------–>
+% v(AN)=#1 x v(AB)
+% #1 le coeff; #2--> A #3--> B #4-->N tq #4-#2 = #1*(#3-#2)
+%<--------------------------------------------------------------------------–>
+% tkz@numv 2
+\def\tkzVecK{\pgfutil@ifnextchar[{\tkz@VecK}{\tkz@VecK[1]}}
+\def\tkz@VecK[#1](#2,#3){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{#3}{center}}%
+ \pgf@xa=\pgf@x\relax%
+ \pgf@ya=\pgf@y\relax%
+ \pgfmathparse{#1}
+ \let\tkz@coeff\pgfmathresult
+ \pgfinterruptboundingbox
+ \path (#2)--++(\tkz@coeff\pgf@xa,\tkz@coeff\pgf@ya) coordinate (tkzPointResult);
+ \endpgfinterruptboundingbox
+\endgroup
+}%
+%<--------------------------------------------------------------------------–>
+% tkzVecKOrthNorm coeff dans #1
+% v(AN) perp v(AB) v(AB) v(AN) sens direct cercle trigo
+% ||v(AN||=1 si #1 est vide ou =1 sinon ||v(AN||=K
+%<--------------------------------------------------------------------------–>
+% tkz@numv 3
+\def\tkzVecKOrthNorm{\pgfutil@ifnextchar[{\tkz@VecKOrthNorm}%
+ {\tkz@VecKOrthNorm[1]}}
+\def\tkz@VecKOrthNorm[#1](#2,#3){%
+\begingroup
+ \tkzpointnormalised{\pgfpointdiff{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{#3}{center}}}
+ \pgf@xa=-\pgf@y\relax%
+ \pgf@ya=\pgf@x\relax%
+ \edef\tkz@x{\fpeval{28.45274*(#1)*\pgf@xa}}
+ \edef\tkz@y{\fpeval{28.45274*(#1)*\pgf@ya}}
+ \pgfinterruptboundingbox
+ \path (#2)--++(\tkz@x pt,\tkz@y pt) coordinate (tkzPointResult);
+ \endpgfinterruptboundingbox
+\endgroup
+}%
+
+%<--------------------------------------------------------------------------–>
+% VectorNormalised ou K*VectorNormalised
+% A-->#2 B-->#3 N-->#4 v(AB) devient v(AN) tq ||v(AN)||=1 si #1=1
+% sinon ||v(AN)||=#1
+%<--------------------------------------------------------------------------–>
+% tkz@numv 4
+\def\tkzVecKNorm{\pgfutil@ifnextchar[{\tkz@VecKNorm}{\tkz@VecKNorm[1]}}
+\def\tkz@VecKNorm[#1](#2,#3){%
+\begingroup
+ \tkzpointnormalised{%
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}
+ {\pgfpointanchor{#3}{center}}}
+ \pgf@xa=\pgf@x\relax%
+ \pgf@ya=\pgf@y\relax%
+ \edef\tkz@x{\fpeval{28.45274*(#1)*\pgf@xa}}
+ \edef\tkz@y{\fpeval{28.45274*(#1)*\pgf@ya}}
+ \pgfinterruptboundingbox
+ \path (#2)--++(\tkz@x pt,\tkz@y pt) coordinate (tkzPointResult);
+ \endpgfinterruptboundingbox
+\endgroup
+}%
+%<--------------------------------------------------------------------------–>
+% \tkz@VecKColinearNorm
+%<--------------------------------------------------------------------------–>
+%% tkz@numv 5
+\def\tkz@VecKColinearNorm[#1](#2,#3){%
+\begingroup
+ \tkzpointnormalised{%
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}
+ {\pgfpointanchor{#3}{center}}}
+ \pgf@xa=\pgf@x\relax%
+ \pgf@ya=\pgf@y\relax%
+ \edef\tkz@x{\fpeval{28.45274*(#1)*\pgf@xa}}
+ \edef\tkz@y{\fpeval{28.45274*(#1)*\pgf@ya}}
+ \pgfinterruptboundingbox
+ \path (\tkz@frompoint)--++(\tkz@x pt,\tkz@y pt) coordinate (tkzPointResult);
+ \endpgfinterruptboundingbox
+\endgroup
+}%
+
+%<--------------------------------------------------------------------------–>
+% VecKCoLinear CN = K x AB #1 pt #2 pt #3 pt #4 nb #5 pt result
+% il faut modifier cette macro : on supprime #3 pour la colinéarité
+% Il suffit d'utiliser Replicate ou Duplicate coeff dans #1
+% v(CD)=#1 x v(AB) #1 le coeff; #2-->A #3-->B #4-->C
+%<--------------------------------------------------------------------------–>
+
+\def\tkz@VecKCoLinear[#1](#2,#3,#4){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{#3}{center}}%
+ \pgf@xa=\pgf@x\relax%
+ \pgf@ya=\pgf@y\relax%
+ \edef\tkz@coeff{\fpeval{#1}}
+ \pgfinterruptboundingbox
+ \path (#4)--+(\tkz@coeff\pgf@xa,\tkz@coeff\pgf@ya) coordinate (tkzPointResult);
+ \endpgfinterruptboundingbox
+\endgroup
+}%
+\def\tkz@VecCoLinear(#1,#2,#3){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#2}{center}}%
+ \pgf@xa=\pgf@x\relax%
+ \pgf@ya=\pgf@y\relax%
+ \pgfinterruptboundingbox
+ \path (#3)--+(\pgf@xa,\pgf@ya) coordinate (tkzPointResult);
+ \endpgfinterruptboundingbox
+\endgroup
+}%
+
+%<-------------------------------------------------------------------------–>
+\makeatother
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points.tex
new file mode 100644
index 00000000000..62600426e73
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-points.tex
@@ -0,0 +1,465 @@
+% tkz-obj-eu-points.tex
+% Copyright 2011 by Alain Matthes
+% This file may be distributed and/or modified
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+\typeout{2020/01/23 3.01c tkz-obj-eu-points.tex}
+\makeatletter
+%add ExCenter
+%<--------------------------------------------------------------------------–>
+% Specific points
+%<--------------------------------------------------------------------------–>
+% barycentre
+%<--------------------------------------------------------------------------–>
+\def\tkzDefBarycentricPoint(#1){%
+\begingroup
+ \path[coordinate] (barycentric cs:#1) coordinate (tkzPointResult);
+\endgroup
+}
+\let\tkzDefBCPoint\tkzDefBarycentricPoint
+
+\def\tkzDefCentroid(#1){%
+\begingroup
+ \xdef\tkz@arg{}
+ \foreach \X in {#1}
+ {%
+ \ifx\tkzutil@empty\tkz@arg%
+ \xdef\tkz@arg{\X=1}
+ \else
+ \xdef\tkz@arg{\tkz@arg,\X=1}
+ \fi
+ }
+ \path[coordinate] (barycentric cs:\tkz@arg) coordinate (tkzPointResult);
+\endgroup
+}
+
+%<--------------------------------------------------------------------------–>
+% milieu de deux points
+%<--------------------------------------------------------------------------–>
+% possible \coordinate (#3) at ($(#1)!0.5!(#2)$);
+%<--------------------------------------------------------------------------–>
+% \def\tkzDefMidPoint(#1,#2){%
+% \begingroup
+% \path (#1) -- (#2) coordinate[pos=.5](tkzPointResult);
+% \endgroup
+% }
+\def\tkzDefMidPoint(#1,#2){%
+\begingroup
+ \pgf@process{\pgfpointanchor{#1}{center}}%
+ \tkz@ax\pgf@x%
+ \tkz@ay\pgf@y%
+ \pgf@process{\pgfpointanchor{#2}{center}}%
+ \tkz@bx\pgf@x%
+ \tkz@by\pgf@y%
+ \advance\tkz@bx by\tkz@ax\relax%
+ \advance\tkz@by by\tkz@ay\relax%
+ \divide\tkz@bx by2\relax%
+ \divide\tkz@by by2\relax
+ \pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkz@bx}{\tkz@by}}
+\endgroup
+}
+\def\tkz@DefMidPoint(#1,#2,#3,#4){%
+\begingroup
+ \tkz@ax#1%
+ \tkz@ay#2%
+ \tkz@bx#3%
+ \tkz@by#4%
+ \advance\tkz@bx by\tkz@ax\relax%
+ \advance\tkz@by by\tkz@ay\relax%
+ \divide\tkz@bx by2\relax%
+ \divide\tkz@by by2\relax
+ \pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkz@bx}{\tkz@by}}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Internal Similitude center
+% Two circles have two similitude centers namely the internal center of similitude Si and the external similitude center Se.
+%<--------------------------------------------------------------------------–>
+\def\tkzDefIntSimilitudeCenter(#1,#2)(#3,#4){%
+\begingroup
+ \path[coordinate](barycentric cs:#1=#4,#3=#2)coordinate (tkzPointResult);
+\endgroup
+}
+\let\tkzIntSimilitudeCenter\tkzDefIntSimilitudeCenter
+%<--------------------------------------------------------------------------–>
+% External Similitude center
+%<--------------------------------------------------------------------------–>
+\def\tkzDefExtSimilitudeCenter(#1,#2)(#3,#4){%
+\begingroup
+ \path[coordinate](barycentric cs:#1=-#4,#3=#2) coordinate(tkzPointResult);
+\endgroup
+}
+\let\tkzExtSimilitudeCenter\tkzDefExtSimilitudeCenter
+%<--------------------------------------------------------------------------–>
+% triangle center
+%<--------------------------------------------------------------------------–>
+
+\def\tkz@numtc{0}
+\pgfkeys{/tkzDefTriangleCenter/.cd,
+ ortho/.code = \def\tkz@numtc{0},
+ centroid/.code = \def\tkz@numtc{1},
+ median/.code = \def\tkz@numtc{1},
+ circum/.code = \def\tkz@numtc{2},
+ in/.code = \def\tkz@numtc{3},
+ ex/.code = \def\tkz@numtc{4},
+ euler/.code = \def\tkz@numtc{5},
+ symmedian/.code = \def\tkz@numtc{6},
+ lemoine/.code = \def\tkz@numtc{6},
+ grebe/.code = \def\tkz@numtc{6},
+ spieker/.code = \def\tkz@numtc{7},
+ gergonne/.code = \def\tkz@numtc{8},
+ nagel/.code = \def\tkz@numtc{9},
+ mittenpunkt/.code = \def\tkz@numtc{10},
+ feuerbach/.code = \def\tkz@numtc{11},
+ circum
+}
+\def\tkzDefTriangleCenter{\pgfutil@ifnextchar[{\tkz@DefTriangleCenter}{\tkz@DefTriangleCenter[]}}
+\def\tkz@DefTriangleCenter[#1](#2){%
+\begingroup
+\pgfqkeys{/tkzDefTriangleCenter}{#1}
+\ifcase\tkz@numtc%
+ \tkzOrthoCenter(#2)
+ \or% 1
+ \tkzCentroid(#2)
+ \or% 2
+ \tkzCircumCenter(#2)
+ \or% 3
+ \tkzInCenter(#2)
+ \or% 4
+ \tkzExCenter(#2)
+ \or% 5
+ \tkzEulerCenter(#2)
+ \or% 6
+ \tkzSymmedianCenter(#2)
+ \or% 7
+ \tkzSpiekerCenter(#2)
+ \or% 8
+ \tkzGergonneCenter(#2)
+ \or%9
+ \tkzNagelCenter(#2)
+ \or%10
+ \tkzMittenpunktCenter(#2)
+ \or%11
+ \tkzFeuerbachCenter(#2)
+ \fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% OrthoCenter
+%<--------------------------------------------------------------------------–>
+\def\tkzOrthoCenter(#1,#2,#3){% H orthocentre
+\begingroup
+ \tkzUProjection(#1,#2)(#3)
+ \pgfnodealias{ort@pta}{tkzPointResult}
+ \tkzUProjection(#1,#3)(#2)
+ \pgfnodealias{ort@ptb}{tkzPointResult}
+ \tkzInterLL(#2,ort@ptb)(#3,ort@pta)
+\endgroup
+}
+\let\tkzDefOrthoCenter\tkzOrthoCenter
+%<--------------------------------------------------------------------------–>
+% GravityCenter
+%<--------------------------------------------------------------------------–>
+% \def\tkzCentroid(#1,#2,#3){%
+% \begingroup
+% \path[coordinate](barycentric cs:#1=1,#2=1,#3=1)coordinate (tkzPointResult);
+% \endgroup
+% }
+\def\tkzCentroid(#1,#2,#3){%
+\begingroup
+ \pgf@process{\pgfpointanchor{#1}{center}}%
+ \tkz@ax\pgf@x%
+ \tkz@ay\pgf@y%
+ \pgf@process{\pgfpointanchor{#2}{center}}%
+ \tkz@bx\pgf@x%
+ \tkz@by\pgf@y%
+ \pgf@process{\pgfpointanchor{#3}{center}}%
+ \tkz@cx\pgf@x%
+ \tkz@cy\pgf@y%
+ \advance\tkz@cx by\tkz@ax\relax%
+ \advance\tkz@cy by\tkz@ay\relax%
+ \advance\tkz@cx by\tkz@bx\relax%
+ \advance\tkz@cy by\tkz@by\relax%
+ \divide\tkz@cx by3\relax%
+ \divide\tkz@cy by3\relax
+ \pgfcoordinate{tkzPointResult}{\pgfqpoint{\tkz@cx}{\tkz@cy}}
+ %\path[coordinate](barycentric cs:#1=1,#2=1,#3=1)coordinate (tkzPointResult);
+\endgroup
+}
+\let\tkzBaryCenter\tkzCentroid
+
+%<--------------------------------------------------------------------------–>
+% CircumCenter
+%<--------------------------------------------------------------------------–>
+\def\tkzCircumCenter(#1,#2,#3){%
+\begingroup
+\pgfinterruptboundingbox
+ \tkzDefMediatorLine(#1,#2)
+ \pgf@process{\pgfpointanchor{tkzFirstPointResult}{center}}%
+ \tkz@ax\pgf@x%
+ \tkz@ay\pgf@y%
+ \pgf@process{\pgfpointanchor{tkzSecondPointResult}{center}}%
+ \tkz@bx\pgf@x%
+ \tkz@by\pgf@y%
+ \tkzDefMediatorLine(#1,#3)
+ \pgf@process{\pgfpointanchor{tkzFirstPointResult}{center}}%
+ \tkz@cx\pgf@x%
+ \tkz@cy\pgf@y%
+ \pgf@process{\pgfpointanchor{tkzSecondPointResult}{center}}%
+ \tkz@dx\pgf@x%
+ \tkz@dy\pgf@y%
+ \tkzInterLLxy(\tkz@ax,\tkz@ay,\tkz@bx,\tkz@by)(\tkz@cx,\tkz@cy,\tkz@dx,\tkz@dy)%
+\endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzDefCircumCenter\tkzCircumCenter
+%<--------------------------------------------------------------------------–>
+% InCenter
+%<--------------------------------------------------------------------------–>
+\def\tkzInCenter(#1,#2,#3){%
+\begingroup
+\pgfinterruptboundingbox
+ \tkzDefBisectorLine(#3,#1,#2)
+ \pgf@process{\pgfpointanchor{tkzPointResult}{center}}%
+ \tkz@bx\pgf@x%
+ \tkz@by\pgf@y%
+ \tkzDefBisectorLine(#3,#2,#1)
+ \pgf@process{\pgfpointanchor{tkzPointResult}{center}}%
+ \tkz@dx\pgf@x%
+ \tkz@dy\pgf@y%
+ \pgf@process{\pgfpointanchor{#1}{center}}%
+ \tkz@ax\pgf@x%
+ \tkz@ay\pgf@y%
+ \pgf@process{\pgfpointanchor{#2}{center}}%
+ \tkz@cx\pgf@x%
+ \tkz@cy\pgf@y%
+ \tkzInterLLxy(\tkz@ax,\tkz@ay,\tkz@bx,\tkz@by)%
+ (\tkz@cx,\tkz@cy,\tkz@dx,\tkz@dy)%
+ \endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzDefInCenter\tkzInCenter
+%<--------------------------------------------------------------------------–>
+% ExCenter
+%<--------------------------------------------------------------------------–>
+\def\tkzExCenter(#1,#2,#3){%
+\begingroup
+\pgfinterruptboundingbox
+ \tkzDefBisectorOutLine(#2,#1,#3)
+ \pgf@process{\pgfpointanchor{tkzPointResult}{center}}%
+ \tkz@bx\pgf@x%
+ \tkz@by\pgf@y%
+ \tkzDefBisectorOutLine(#2,#3,#1)
+ \pgf@process{\pgfpointanchor{tkzPointResult}{center}}%
+ \tkz@dx\pgf@x%
+ \tkz@dy\pgf@y%
+ \pgf@process{\pgfpointanchor{#1}{center}}%
+ \tkz@ax\pgf@x%
+ \tkz@ay\pgf@y%
+ \pgf@process{\pgfpointanchor{#3}{center}}%
+ \tkz@cx\pgf@x%
+ \tkz@cy\pgf@y%
+ \tkzInterLLxy(\tkz@ax,\tkz@ay,\tkz@bx,\tkz@by)%
+ (\tkz@cx,\tkz@cy,\tkz@dx,\tkz@dy)%
+ \endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzDefExCenter\tkzExCenter
+%<--------------------------------------------------------------------------–>
+% EulerCenter neuf points
+%<--------------------------------------------------------------------------–>
+\def\tkzEulerCenter(#1,#2,#3){%
+% mileu de orthocentre et centre cercle circonscrit
+% passe par les midpoints par les pieds des hauteurs
+\begingroup
+\pgfinterruptboundingbox
+ \tkzDefMidPoint(#1,#2)
+ \pgfnodealias{eu@mic}{tkzPointResult}
+ \tkzDefMidPoint(#1,#3)
+ \pgfnodealias{eu@mib}{tkzPointResult}
+ \tkzDefMidPoint(#2,#3)
+ \pgfnodealias{eu@mia}{tkzPointResult}
+ \tkzCircumCenter(eu@mia,eu@mib,eu@mic)
+\endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzNinePointCenter\tkzEulerCenter
+\let\tkzDefEulerCenter\tkzEulerCenter
+%<--------------------------------------------------------------------------–>
+%Symmedian center Lemoine point Grebe point K
+%<--------------------------------------------------------------------------–>
+\def\tkzSymmedianCenter(#1,#2,#3){%
+\begingroup
+\pgfinterruptboundingbox
+ \tkzDefMidPoint(#2,#3)
+ \pgfnodealias{eu@mic}{tkzPointResult}
+ \tkzDefMidPoint(#1,#3)
+ \pgfnodealias{eu@mib}{tkzPointResult}
+ \tkzUProjection(#2,#3)(#1)
+ \pgfnodealias{ort@pta}{tkzPointResult}
+ \tkzDefMidPoint(#1,ort@pta)
+ \pgfnodealias{eu@mid}{tkzPointResult}
+ \tkzUProjection(#1,#3)(#2)
+ \pgfnodealias{ort@ptb}{tkzPointResult}
+ \tkzDefMidPoint(#2,ort@ptb)
+ \pgfnodealias{eu@mie}{tkzPointResult}
+ \tkzInterLL(eu@mic,eu@mid)(eu@mib,eu@mie)
+\endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzLemoinePoint\tkzSymmedianCenter
+\let\tkzGrebePoint\tkzSymmedianCenter
+\let\tkzDefLemoinePoint\tkzLemoinePoint
+%<--------------------------------------------------------------------------–>
+% Spieker center
+%<--------------------------------------------------------------------------–>
+\def\tkzSpiekerCenter(#1,#2,#3){%
+\begingroup
+% we need to get the midpoints
+\pgfcoordinate{tkz@m3}{%
+ \pgfpointscale{0.5}{%
+ \pgfpointadd{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#2}{center}}}}%
+\pgfcoordinate{tkz@m2}{%
+ \pgfpointscale{0.5}{%
+ \pgfpointadd{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#3}{center}}}}%
+\pgfcoordinate{tkz@m1}{%
+ \pgfpointscale{0.5}{%
+ \pgfpointadd{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{#3}{center}}}}%
+\tkzInCenter(tkz@m1,tkz@m2,tkz@m3)
+\endgroup
+}
+\let\tkzDefSpiekerCenter\tkzSpiekerCenter
+%<--------------------------------------------------------------------------–>
+% Gergonne center Ge
+%<--------------------------------------------------------------------------–>
+\def\tkzGergonneCenter(#1,#2,#3){%
+\begingroup
+\pgfinterruptboundingbox
+ \tkzInCenter(#1,#2,#3)
+ \pgfnodealias{tkz@ptin}{tkzPointResult}
+ \tkzUProjection(#2,#3)(tkz@ptin)
+ \pgfnodealias{tkz@oca}{tkzPointResult}
+ \tkzUProjection(#1,#3)(tkz@ptin)
+ \pgfnodealias{tkz@ocb}{tkzPointResult}
+ \tkzInterLL(#1,tkz@oca)(#2,tkz@ocb)
+\endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzDefGergonneCenter\tkzGergonneCenter
+%<--------------------------------------------------------------------------–>
+% Nagel center Na
+%<--------------------------------------------------------------------------–>
+% INa = 3 IG. Nagel point
+\def\tkzNagelCenter(#1,#2,#3){%
+\begingroup
+\pgfinterruptboundingbox
+ \tkzInCenter(#1,#2,#3)
+ \pgfnodealias{tkz@ptin}{tkzPointResult}
+ \tkzCentroid(#1,#2,#3)
+ \pgfnodealias{tkz@cen}{tkzPointResult}
+ \tkz@VecCoLinear(tkz@ptin,tkz@cen,tkz@ptin)
+\endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzDefNagelCenter\tkzNagelCenter
+%<--------------------------------------------------------------------------–>
+% Mittenpunkt
+%<--------------------------------------------------------------------------–>
+\def\tkzMittenpunktCenter(#1,#2,#3){%
+\begingroup
+\pgfinterruptboundingbox
+ \tkzExCenter(#2,#3,#1)
+ \pgfnodealias{tkz@a}{tkzPointResult}
+ \tkzExCenter(#3,#1,#2)
+ \pgfnodealias{tkz@b}{tkzPointResult}
+ \pgfcoordinate{tkz@ma}{%
+ \pgfpointscale{0.5}{%
+ \pgfpointadd{\pgfpointanchor{#1}{center}}{\pgfpointanchor{#2}{center}}}}%
+ \pgfcoordinate{tkz@mb}{%
+ \pgfpointscale{0.5}{%
+ \pgfpointadd{\pgfpointanchor{#2}{center}}{\pgfpointanchor{#3}{center}}}}%
+ \tkzInterLL(tkz@a,tkz@ma)(tkz@b,tkz@mb)
+ \endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzDefMittenpunktCenter\tkzMittenpunktCenter
+\let\tkzDefMiddlespoint\tkzMittenpunktCenter
+%<--------------------------------------------------------------------------–>
+% Feuerbach point
+%<--------------------------------------------------------------------------–>
+\def\tkzFeuerbachCenter(#1,#2,#3){%
+\begingroup
+\pgfinterruptboundingbox
+ \tkzEulerCenter(#1,#2,#3)
+ \pgfnodealias{tkz@euler}{tkzPointResult}
+ \tkzInCenter(#1,#2,#3)
+ \pgfnodealias{tkz@in}{tkzPointResult}
+ \tkzUProjection(#2,#3)(tkzPointResult)
+ \tkzInterLC(tkz@in,tkz@euler)(tkz@in,tkzPointResult)\tkzGetFirstPoint{tkz@fe}
+ \tkzRenamePoint(tkz@fe){tkzPointResult}
+ \endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzDefFeuerbachCenter\tkzFeuerbachCenter
+%<--------------------------------------------------------------------------–>
+% Orthogonal center
+%<--------------------------------------------------------------------------–>
+\def\tkzOrthogonalCenter(#1,#2){%
+\begingroup
+\pgfinterruptboundingbox
+ \tkz@VecK[\tkz@koeff/(1+\tkz@koeff)](#1,#2)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#1,#2)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+ \tkzDefMidPoint(tkzFirstPointResult,tkzSecondPointResult)
+\endpgfinterruptboundingbox
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% End Triangle center
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% Projection center of excircles
+%<--------------------------------------------------------------------------–>
+\def\tkzDefProjExcenter{\pgfutil@ifnextchar[{%
+ \tkz@DefProjExcenter}{%
+ \tkz@DefProjExcenter[]}
+ }
+\def\tkz@DefProjExcenter[#1](#2,#3,#4)(#5)#6{
+\begingroup
+ \SetUpPTTR{#1}
+ \foreach \name [count=\i] in {#5} {%
+ \global\expandafter\edef\csname tkz@pt\i\endcsname{\name}
+ }
+ \foreach \name [count=\i] in {#6} {%
+ \global\expandafter\edef\csname tkz@ppt\i\endcsname{\name}
+ }
+\tkzDefPointBy[projection=onto #3--#4 ](\tkz@pttr@name \csname tkz@pt1\endcsname)
+\pgfnodealias{\csname tkz@ppt1\endcsname\csname tkz@pt1\endcsname}{tkzPointResult}
+\tkzDefPointBy[projection=onto #3--#4 ](\tkz@pttr@name \csname tkz@pt2\endcsname)
+\pgfnodealias{\csname tkz@ppt1\endcsname\csname tkz@pt2\endcsname}{tkzPointResult}
+\tkzDefPointBy[projection=onto #3--#4 ](\tkz@pttr@name \csname tkz@pt3\endcsname)
+\pgfnodealias{\csname tkz@ppt1\endcsname\csname tkz@pt3\endcsname}{tkzPointResult}
+\tkzDefPointBy[projection=onto #2--#4 ](\tkz@pttr@name \csname tkz@pt1\endcsname)
+\pgfnodealias{\csname tkz@ppt2\endcsname\csname tkz@pt1\endcsname}{tkzPointResult}
+\tkzDefPointBy[projection=onto #2--#4 ](\tkz@pttr@name \csname tkz@pt2\endcsname)
+\pgfnodealias{\csname tkz@ppt2\endcsname\csname tkz@pt2\endcsname}{tkzPointResult}
+\tkzDefPointBy[projection=onto #2--#4 ](\tkz@pttr@name \csname tkz@pt3\endcsname)
+\pgfnodealias{\csname tkz@ppt2\endcsname\csname tkz@pt3\endcsname}{tkzPointResult}
+\tkzDefPointBy[projection=onto #3--#2 ](\tkz@pttr@name \csname tkz@pt1\endcsname)
+\pgfnodealias{\csname tkz@ppt3\endcsname\csname tkz@pt1\endcsname}{tkzPointResult}
+\tkzDefPointBy[projection=onto #3--#2 ](\tkz@pttr@name \csname tkz@pt2\endcsname)
+\pgfnodealias{\csname tkz@ppt3\endcsname\csname tkz@pt2\endcsname}{tkzPointResult}
+\tkzDefPointBy[projection=onto #3--#2 ](\tkz@pttr@name \csname tkz@pt3\endcsname)
+\pgfnodealias{\csname tkz@ppt3\endcsname\csname tkz@pt3\endcsname}{tkzPointResult}
+\endgroup
+}
+
+
+\makeatother
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-polygons.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-polygons.tex
new file mode 100644
index 00000000000..56d0b86fdf2
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-polygons.tex
@@ -0,0 +1,113 @@
+% tkz-obj-eu-polygons.tex
+% Copyright 2011 by Alain Matthes
+% This file may be distributed and/or modified
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+\typeout{2020/01/23 3.01c tkz-obj-eu-polygons.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% Polygon
+%<--------------------------------------------------------------------------–>
+%<--------------------------- square ------------------------------------–>
+%
+%<--------------------------------------------------------------------------–>
+\def\tkzDefSquare(#1,#2){
+\begingroup
+ \tkzURotateAngle(#2,-90)(#1)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkzURotateAngle(#1, 90)(#2)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+\endgroup
+}
+%<--------------------- parallélogramme ---------------------------------–>
+%
+%<--------------------------------------------------------------------------–>
+\def\tkzDefParallelogram(#1,#2,#3){
+\begingroup
+\tkzDefPointWith[colinear= at #3](#2,#1)
+\endgroup
+}
+
+%<-------------------------- gold rectangle -------------------------------–>
+%
+%<--------------------------------------------------------------------------–>
+
+\def\tkzDefGoldRectangle(#1,#2){
+\begingroup
+ \tkzVecKOrth[-\tkzInvPhi](#2,#1)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkzVecKOrth[\tkzInvPhi](#1,#2)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+\endgroup
+}
+\def\tkzDrawGoldRectangle{\pgfutil@ifnextchar[{\tkz@DrawGoldRectangle}{%
+ \tkz@DrawGoldRectangle[]}}
+
+%<---------------------------- Regular Polygon -------------------------–>
+\def\tkz@numregpol{0}
+\pgfkeys{/defregpoly/.cd,
+ name/.store in = \tkz@regpolname,
+ sides/.store in = \tkz@regpolsides,
+ center/.code = \def\tkz@numregpol{0},
+ side/.code = \def\tkz@numregpol{1},
+ center,
+ name = P,
+ sides = 5
+}
+\def\tkzDefRegPolygon{\pgfutil@ifnextchar[{\tkz@DefRegPolygon}{%
+ \tkz@DefRegPolygon[]}}
+\def\tkz@DefRegPolygon[#1](#2,#3){%
+\begingroup
+\pgfqkeys{/defregpoly}{#1}
+\ifcase\tkz@numregpol%
+ \tkzRegPolygonCenter(#2,#3)
+ \or%
+ \tkzRegPolygonSide(#2,#3)
+ \fi
+\endgroup
+}
+\def\tkzRegPolygonCenter(#1,#2){
+\begingroup
+ \foreach \v in {1,2,...,\tkz@regpolsides}
+ {%
+ \pgfmathsetmacro{\tkz@regangle}{360/\tkz@regpolsides*(\v-1)}
+ \tkzDefPointBy[rotation= center #1 angle \tkz@regangle](#2)
+ \pgfnodealias{\tkz@regpolname\v}{tkzPointResult}
+ }
+\endgroup
+}
+\def\tkzRegPolygonSide(#1,#2){
+\begingroup
+% get the center
+\pgfmathsetmacro{\tkz@regangle}{360/\tkz@regpolsides*(\tkz@regpolsides-1)}
+\pgfmathsetmacro{\tkz@regangleside}{(180-\tkz@regangle)/2}
+\tkzDefMidPoint(#1,#2)
+\pgfnodealias{tkz@tempPt}{tkzPointResult}
+\tkzCalcLength[cm](tkz@tempPt,B) \tkzGetLength{tkz@len}
+\pgfmathsetmacro{\tkz@inscriberadius}{%
+ \tkz@len*tan(90*(\tkz@regpolsides-2)/\tkz@regpolsides)}
+\tkzDefPointWith[orthogonal normed,K=\tkz@inscriberadius](tkz@tempPt,#2)
+\pgfnodealias{tkz@RegPolCenter}{tkzPointResult}
+\tkzRegPolygonCenter(tkz@RegPolCenter,#1)
+\pgfnodealias{tkzPointResult}{tkz@RegPolCenter}
+\endgroup
+}
+
+%<---------------------------- CLIP --------------------------------–>
+%
+%<--------------------------------------------------------------------------–>
+\def\tkzClipPolygon(#1,#2){%
+\path[clip] (#1)
+ \foreach \pt in {#1,#2}{--(\pt)}--cycle;
+}
+
+ \def\tkzClipOutPolygon(#1,#2){\clip[tkzreverseclip] (#1)
+ \foreach \pt in {#1,#2}{--(\pt)}--cycle;
+}
+
+
+
+\makeatother
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-protractor.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-protractor.tex
index 04d4e3b3b95..eaeca969fc1 100644
--- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-protractor.tex
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-protractor.tex
@@ -1,18 +1,15 @@
+% tkz-obj-eu-protractor.tex
% Copyright 2011 by Alain Matthes
-%
% This file may be distributed and/or modified
-%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Public License.
-
-
-\def\fileversion{1.16 c}
-\def\filedate{2011/06/01}
-
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+ \typeout{2020/01/23 3.01c tkz-obj-eu-protractor.tex}
+\makeatletter
%<--------------------------------------------------------------------------–>
% !!! idea from Y. Combe !!!
%<--------------------------------------------------------------------------–>
-%
% \tkzProtractor Protractor
%
% Rapporteur ajustable et positionable
@@ -31,49 +28,11 @@
% lw : line width (épaisseur des lignes)
% ce paramètre subit le facteur d'échelle.
%<--------------------------------------------------------------------------–>
-\def\HalfProtractor{%
-\tkzActivOff
- \draw [fill=black!50!blue!20!,even odd rule,semitransparent](-160:5cm) -- (-20:5cm) arc (-20:200:5cm) -- cycle %
- (-180:3.5cm) -- (0:3.5cm) arc (0:180:3.5cm) -- cycle;%
-
- \draw (-90:0.3cm) -- (0,0)
- (-135:0.3cm) -- (0,0)
- (-45:0.3cm) -- (0,0);
-\foreach \MO@i in {0,1,...,180}
-\pgfmathparse{ 4.8 * (mod(\MO@i ,5)==0) + 4.9 * (mod(\MO@i ,5)>0) }
-\draw (\MO@i:\pgfmathresult cm)--(\MO@i:5cm);
-
- \foreach \d in {0,1,...,180}
- \pgfmathparse{3.7 * (mod(\d,5)==0) + 3.6 * (mod(\d,5)>0)}
- \draw (\d:\pgfmathresult cm)--(\d:3.5cm);
-
-\draw (0: 4.6cm) node[font=\small] {0}
- (0: 4cm) node[font=\small] {180};
-
-\foreach \d in {10,20,...,80}
- \pgfmathtruncatemacro{\rang}{180 - \d }
- \draw (\d:3.9 cm) node[font=\tiny] {\rang}
- (\d:4.6 cm) node[font=\tiny] {\d};
-
-\draw (90: 4.25cm) node[font=\small] {90};
-\draw (90: 4.6 cm) -- (90:5cm)
- (90: 3.9 cm) -- (90:3.5cm) ;
-
-\foreach \d in {100,110,...,170}
- \pgfmathtruncatemacro{\rang}{180 - \d }
- \draw (\d:3.9 cm) node[font=\tiny] {\rang}
- (\d:4.6 cm) node[font=\tiny] {\d};
-
- \draw (180: 4.5cm) node[font=\small] {180}
- (180: 3.9cm) node[font=\small] {0};
-\tkzActivOn
-}
-
\def\FullProtractor{%
-\tkzActivOff
\draw[fill=black!50!yellow!20!,even odd rule,semitransparent]%
(0,0) circle (4cm);
-\draw (0,0) circle (3.3cm);\draw (0,0) circle (4cm);
+\draw (0,0) circle (3.3cm);
+\draw (0,0) circle (4cm);
\draw[fill=black] (0,0) circle (.08mm);
\node[draw, circle, inner sep=.2mm] (a) at (0,0) {};
\foreach \x in {0, 90, ..., 360}{%
@@ -90,10 +49,9 @@
}
\def\FullProtractorReturn{%
-\tkzActivOff
-\draw[fill=black!50!yellow!20!,even odd rule,semitransparent]%
- (0,0) circle (4cm);
-\draw (0,0) circle (3.3cm);\draw (0,0) circle (4cm);
+\draw[fill=black!50!yellow!20!,even odd rule,semitransparent] (0,0) circle (4cm);
+\draw (0,0) circle (3.3cm);
+\draw (0,0) circle (4cm);
\draw[fill=black] (0,0) circle (.08mm);
\node[draw, circle, inner sep=.2mm] (a) at (0,0) {};
\foreach \x in {0, 90, ..., 360}{%
@@ -108,65 +66,35 @@
\draw [>=stealth',->, thick,black] (0:2.5) arc(0:-32:2.5);
\draw [>=stealth',->, thick,black] (0:2) arc(0:-32:2);
\draw [>=stealth',->, thick,black] (0:1.5) arc(0:-32:1.5);
-\tkzActivOn
}
-
-\newif\iftkz@RappReturn
-\newif\iftkz@RappFull
+\global\let\tkz@@Protractor\FullProtractor
\pgfkeys{
protractor/.cd,
- with/.is choice,
- with/full/.code = {\global\let\tkz@@Protractor\FullProtractor
- \tkz@RappFulltrue},
- with/half/.code = {\global\let\tkz@@Protractor\HalfProtractor
- \tkz@RappFullfalse},
- with/.default = full,
lw/.code = {\def\cmdMO@Rap@lw{#1}},
shift/.code = {\def\cmdMO@Rap@shift{#1}},
rotate/.code = {\def\cmdMO@Rap@rotate{#1}},
scale/.code = {\def\cmdMO@Rap@scale{#1}},
return/.is if = tkz@RappReturn,
- return/.default = true
+ return/.default = true,
+ /protractor/.search also={/tikz}
}
-\def\tkzOriProtractor{\pgfutil@ifnextchar[{\tkz@OriProtractor}{%
- \tkz@OriProtractor[]}}
-\def\tkz@OriProtractor[#1]{
- \pgfkeys{/protractor/.cd,
- with=full,
- shift={(0,0)},
- rotate=0,
- lw=0.4pt,
- scale =1,
- return=false
- }
- \pgfqkeys{/protractor}{#1}
- \pgfmathsetlengthmacro{\MO@lw}{\cmdMO@Rap@lw * \cmdMO@Rap@scale}
- \begin{scope}[shift = \cmdMO@Rap@shift,%
- scale = \cmdMO@Rap@scale,%
- rotate = \cmdMO@Rap@rotate,%
- every node/.style = {scale =\cmdMO@Rap@scale,
- rotate =\cmdMO@Rap@rotate},%
- line width=\MO@lw
- ]%
- \tkz@@Protractor
-\end{scope}
-}
+
+
\def\tkzProtractor{\pgfutil@ifnextchar[{\tkz@Protractor}{\tkz@Protractor[]}}
-\def\tkz@Protractor[#1](#2,#3){
- \pgfkeys{/protractor/.cd,
- with=full,
- shift={(0,0)},
- rotate=0,
- lw=0.4pt,
- scale =1,
- return=false
+\def\tkz@Protractor[#1](#2,#3){%
+ \pgfkeys{%
+ /protractor/.cd,
+ shift={(0,0)},
+ rotate=0,
+ lw=0.4pt,
+ scale =1,
+ return=false
}
\pgfqkeys{/protractor}{#1}
\tkz@@extractxy{#2}
\global\tkz@ax\pgf@x
\global\tkz@ay\pgf@y
\tkzFindSlopeAngle(#2,#3)\tkzGetAngle{cmdMO@Rap@rotate}%
-\iftkz@RappFull
\iftkz@RappReturn
\global\let\tkz@@Protractor\FullProtractorReturn
\fi
@@ -179,25 +107,10 @@
line width=\MO@lw]%
\tkz@@Protractor
\end{scope}
-\else
- \iftkz@RappReturn%
- \pgfmathsubtract{\cmdMO@Rap@rotate}{180}
- \let\cmdMO@Rap@rotate\pgfmathresult
- \fi
-\pgfmathsetlengthmacro{\MO@lw}{\cmdMO@Rap@lw * \cmdMO@Rap@scale}
- \begin{scope}[shift = {(\tkz@ax,\tkz@ay)},%
- scale = \cmdMO@Rap@scale,%
- rotate = \cmdMO@Rap@rotate,%
- every node/.style = {scale =\cmdMO@Rap@scale,
- rotate =\cmdMO@Rap@rotate},%
- line width=\MO@lw]%
- \tkz@@Protractor
-\end{scope}
-\fi
}
-
%<--------------------------------------------------------------------------–>
% fin de \tkzProtractor
%<--------------------------------------------------------------------------–>
+\makeatother
\endinput
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-sectors.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-sectors.tex
index 9934a6e3975..538a8f34f9b 100644
--- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-sectors.tex
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-sectors.tex
@@ -1,35 +1,27 @@
+% tkz-obj-eu-sectors.tex
% Copyright 2011 by Alain Matthes
-%
% This file may be distributed and/or modified
-%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Public License.
-
-
-\def\fileversion{1.16 c}
-\def\filedate{2011/06/01}
-
-%<--------------------------------------------------------------------------–>
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+\typeout{2020/01/23 3.01c tkz-obj-eu-sectors.tex}
+\makeatletter
%<----------------------- Sectors ------------------------------–>
-%<--------------------------------------------------------------------------–>
\tikzset{sstyle/.style={#1}}
-
-
-\global\def\tkz@nums{0}
+\gdef\tkz@nums{0}
\pgfkeys{/drawsector/.cd,
-towards/.code = {\global\def\tkz@nums{0}},
-rotate/.code = {\global\def\tkz@nums{1}},
-R/.code = {\global\def\tkz@nums{2}},
-R with nodes/.code = {\global\def\tkz@nums{3}},
-/drawsector/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1,
- /tikz/\searchname/.retry=#1}}
+ towards/.code = {\def\tkz@nums{0}},
+ rotate/.code = {\def\tkz@nums{1}},
+ R/.code = {\def\tkz@nums{2}},
+ R with nodes/.code = {\def\tkz@nums{3}},
+ towards,
+ /drawsector/.search also = {/tikz},
}
\def\tkzDrawSector{\pgfutil@ifnextchar[{\tkz@DrawSector}{\tkz@DrawSector[]}}
\def\tkz@DrawSector[#1](#2,#3)(#4){%
\begingroup
-\pgfkeys{/drawsector/.cd,towards}
\pgfqkeys{/drawsector}{#1}
\ifcase\tkz@nums%
\tkzDrawSectorN[#1](#2,#3)(#4)
@@ -42,8 +34,6 @@ R with nodes/.code = {\global\def\tkz@nums{3}},
\fi
\endgroup
}
-
-
\def\tkzDrawSectorRAngles{\pgfutil@ifnextchar[{\tkz@DrawSectorRAngles}{%
\tkz@DrawSectorRAngles[]}}
\def\tkz@DrawSectorRAngles[#1](#2,#3)(#4,#5){%
@@ -68,7 +58,7 @@ R with nodes/.code = {\global\def\tkz@nums{3}},
(#2) --(\tkz@FirstAngle:#3) arc (\tkz@FirstAngle:\tkz@SecondAngle:#3)--cycle;
\endgroup
} % revoir il y a plus simple que ce shift !!!
- %<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
% \tkzDrawSectorN(O,A)(B)
%<--------------------------------------------------------------------------–>
\def\tkzDrawSectorN{\pgfutil@ifnextchar[{\tkz@DrawSectorN}{%
@@ -116,8 +106,8 @@ R with nodes/.code = {\global\def\tkz@nums{3}},
% \tkzDrawSectorRwithNodesAngles(O,A,B)(ang1,ang2)
%<--------------------------------------------------------------------------–>
\def\tkzDrawSectorRwithNodesAngles{\pgfutil@ifnextchar[{%
- \tkz@DrawSectorRwithNodesAngles}{%
- \tkz@DrawSectorRwithNodesAngles[]}}
+ \tkz@DrawSectorRwithNodesAngles}{%
+ \tkz@DrawSectorRwithNodesAngles[]}}
\def\tkz@DrawSectorRwithNodesAngles[#1](#2,#3,#4)(#5,#6){%
\begingroup
\tkzCalcLength(#3,#4)\tkzGetLength{tkz@radius}
@@ -155,23 +145,20 @@ R with nodes/.code = {\global\def\tkz@nums{3}},
% Fill
%<--------------------------------------------------------------------------–>
%<--------------------------------------------------------------------------–>
-\global\def\tkz@nums{0}
-\pgfkeys{/fillsector/.cd,
-towards/.code = {\global\def\tkz@nums{0}},
-rotate/.code = {\global\def\tkz@nums{1}},
-R/.code = {\global\def\tkz@nums{2}},
-R with nodes/.code = {\global\def\tkz@nums{3}},
-color/.code = {\global\def\tkz@fillcolor{#1}},
-/fillsector/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1,
- /tikz/\searchname/.retry=#1}}
+\gdef\tkz@nums{0}
+\pgfkeys{/@fillsector/.cd,
+ towards/.code = {\def\tkz@nums{0}},
+ rotate/.code = {\def\tkz@nums{1}},
+ R/.code = {\def\tkz@nums{2}},
+ R with nodes/.code = {\def\tkz@nums{3}},
+ towards,
+ /@fillsector/.search also={/tikz},
}
\def\tkzFillSector{\pgfutil@ifnextchar[{\tkz@FillSector}{\tkz@FillSector[]}}
\def\tkz@FillSector[#1](#2,#3)(#4){%
\begingroup
-\pgfkeys{/fillsector/.cd,towards}
-\pgfqkeys{/fillsector}{#1}
+\pgfqkeys{/@fillsector}{#1}
\ifcase\tkz@nums%
\tkzFillSectorN[#1](#2,#3)(#4)
\or% 1
@@ -208,7 +195,7 @@ color/.code = {\global\def\tkz@fillcolor{#1}},
\edef\tkz@FirstAngle{\pgfmathresult}%
\pgfmathadd{\tkz@SecondAngle}{\tkz@delta}
\edef\tkz@SecondAngle{\pgfmathresult}
- \path[shift = {(#2)},/fillsector/.cd,fill=\tkz@fillcolor,#1] (#2) -- %
+ \path[shift = {(#2)},/@fillsector/.cd,fill=\tkz@fillcolor,#1] (#2) -- %
(\tkz@FirstAngle:#3) arc (\tkz@FirstAngle:\tkz@SecondAngle:#3)--cycle;
\endgroup
}
@@ -247,9 +234,9 @@ color/.code = {\global\def\tkz@fillcolor{#1}},
%<--------------------------------------------------------------------------–>
% \tkzFillSectorAngles(O,A)(ang1,ang2)
%<--------------------------------------------------------------------------–>
-\def\tkzDrawSectorAngles{\pgfutil@ifnextchar[{\tkz@illSectorAngles}{%
- \tkz@illSectorAngles[]}}
-\def\tkz@illSectorAngles[#1](#2,#3)(#4,#5){%
+\def\tkzFillSectorAngles{\pgfutil@ifnextchar[{\tkz@FillSectorAngles}{%
+ \tkz@FillSectorAngles[]}}
+\def\tkz@FillSectorAngles[#1](#2,#3)(#4,#5){%
\begingroup
\tkzCalcLength(#2,#3)\tkzGetLength{tkz@radius}
\tkz@FillSectorRAngles[#1](#2,\tkz@radius pt)(#4,#5)
@@ -324,11 +311,10 @@ color/.code = {\global\def\tkz@fillcolor{#1}},
%<--------------------------------------------------------------------------–>
%<--------------------------------------------------------------------------–>
\def\tkz@numcs{0}
-\pgfkeys{
-/clipsector/.cd,
-towards/.code = {\global\def\tkz@numcs{0}},
-rotate/.code = {\global\def\tkz@numcs{1}},
-R/.code = {\global\def\tkz@numcs{2}},
+\pgfkeys{/clipsector/.cd,
+ towards/.code = {\def\tkz@numcs{0}},
+ rotate/.code = {\def\tkz@numcs{1}},
+ R/.code = {\def\tkz@numcs{2}},
}
%<--------------------------------------------------------------------------–>
\def\tkzClipSector{\pgfutil@ifnextchar[{\tkz@ClipSector}{%
@@ -347,5 +333,6 @@ R/.code = {\global\def\tkz@numcs{2}},
\fi
\endgroup
}
+\makeatother
\endinput
\ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-show.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-show.tex
new file mode 100644
index 00000000000..457fbed257a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-show.tex
@@ -0,0 +1,344 @@
+%tkz-obj-eu-show.tex
+% Copyright 2011 by Alain Matthes
+% This file may be distributed and/or modified
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+\typeout{2020/01/23 3.01c tkz-obj-eu-show.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% finding specific points in a triangle
+%<--------------------------------------------------------------------------–>
+% equi points
+%<--------------------------------------------------------------------------–>
+% draw ? show ?
+\pgfkeys{/tkzEquiPt/.cd,
+ from/.store in = {\tkz@frompoint},
+ dist/.store in = {\tkz@equ@dist},
+ show/.is if = tkz@equi@show,
+ dist = 2,
+ show = false,
+ /tkzEquiPt/.search also={/tikz}
+}
+
+\def\tkzDefEquiPoints{\pgfutil@ifnextchar[{\tkz@DefEquiPoints}{%
+ \tkz@DefEquiPoints[]}}
+\def\tkz@DefEquiPoints[#1](#2,#3){%
+\pgfqkeys{/tkzEquiPt}{#1}
+\begingroup
+ \tkzUProjection(#2,#3)(\tkz@frompoint)
+ \pgfnodealias{tkzEQpoint}{tkzPointResult}
+ \tkzVecKNorm[\tkz@equ@dist](tkzEQpoint,#2)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkzVecKNorm[-\tkz@equ@dist](tkzEQpoint,#2)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+ \iftkz@equi@show
+ \tkzCompass[#1](\tkz@frompoint,tkzFirstPointResult)
+ \tkzCompass[#1](\tkz@frompoint,tkzSecondPointResult)
+ \fi
+\endgroup
+}
+
+%<--------------------------- The SHOW --------------------------------–>
+%<--------------------------------------------------------------------------–>
+\global\def\tkz@numsh{0}
+\pgfkeys{/show/.cd,
+ mediator/.code = \def\tkz@numsh{0},
+ perpendicular/.code args = {through #1} {\global\def\tkz@numsh{1}%
+ \def\tkz@through{#1}},
+ orthogonal/.code args = {through #1} {\global\def\tkz@numsh{1}%
+ \global\def\tkz@through{#1}},
+ parallel/.code args = {through #1} {\global\def\tkz@numsh{2}%
+ \global\def\tkz@through{#1}},
+ bisector/.code = \global\def\tkz@numsh{3},
+ K/.code = \def\tkz@koeff{#1},
+ length/.code = \def\tkz@show@length{#1},
+ ratio/.code = \def\tkz@show@ratio{#1},
+ gap/.code = \def\tkz@show@gap{#1},
+ size/.code = \def\tkz@show@size{#1},
+ /show/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
+ \pgfkeysalso{\searchname/.try=#1,
+ /compass/\searchname/.retry=#1,
+ /tikz/\searchname/.retry=#1}%
+ }
+ }
+\def\tkzShowLine{\pgfutil@ifnextchar[{\tkz@ShowLine}{\tkz@ShowLine[]}}
+\def\tkz@ShowLine[#1](#2){%
+\begingroup
+\pgfqkeys{/show}{ K = 1,
+ gap = 2,
+ ratio = .5,
+ length = 1,
+ size = 1
+ }
+\pgfqkeys{/show}{#1}
+\ifcase\tkz@numsh%
+ % first case 0
+ \tkzShowMediatorLine[#1](#2)
+ \or% 1
+ \tkzShowOrthLine[#1](#2)(\tkz@through)
+ \or% 2
+ \tkzShowLLLine[#1](#2)(\tkz@through)
+ \or% 3
+ \tkzShowBisectorLine[#1](#2)
+\fi
+\endgroup
+}
+
+\def\tkzShowMediatorLine{%
+ \pgfutil@ifnextchar[{\tkz@ShowMediatorLine}{\tkz@ShowMediatorLine[]}}
+\def\tkz@ShowMediatorLine[#1](#2,#3){%
+\begingroup
+\pgfkeys{show/.cd, gap = 2,
+ ratio = .5,
+ length = 1
+ }
+\pgfkeys{show/.cd,#1}
+ \path (#2) -- (#3) coordinate[pos=.5](tkzmidpoint);
+ \tkzURotateAngle(#2,60)(#3)
+ \pgfnodealias{tkzFirstPointResult}{tkzPointResult}
+ \tkzURotateAngle(#3,60)(#2)
+ \pgfnodealias{tkzSecondPointResult}{tkzPointResult}
+ \tkz@VecKOrthNorm[1](tkzmidpoint,#2)
+ \pgfnodealias{MED@tmp1}{tkzPointResult}
+ \tkz@VecKOrthNorm[1](tkzmidpoint,#3)
+ \pgfnodealias{MED@tmp2}{tkzPointResult}
+ \tkz@VecKNorm[\tkz@show@gap](tkzmidpoint,MED@tmp1)
+ \pgfnodealias{MED@1}{tkzPointResult}
+ \tkz@VecKNorm[\tkz@show@gap](tkzmidpoint,MED@tmp2)
+ \pgfnodealias{MED@2}{tkzPointResult}
+ \tkzCompass[#1,length=\tkz@show@ratio*\tkz@show@length](#2,MED@1)
+ \tkzCompass[#1](#3,MED@1)
+ \tkzCompass[#1,length=\tkz@show@ratio*\tkz@show@length](#2,MED@2)
+ \tkzCompass[#1](#3,MED@2)
+\endgroup
+}
+\def\tkzShowLLLine{\pgfutil@ifnextchar[{\tkz@ShowLLLine}{\tkz@ShowLLLine[]}}
+\def\tkz@ShowLLLine[#1](#2,#3)(#4){%
+\begingroup
+\pgfkeys{show/.cd,gap=2,ratio=.75,length=1}
+\pgfkeys{show/.cd,#1}
+ \tkz@VecKCoLinear[1](#2,#3,#4)
+ \pgfnodealias{tkz@lltmp}{tkzPointResult}
+ \tkzCompass[#1](#4,tkz@lltmp)
+ \tkzCompass[#1,length=\tkz@show@ratio*\tkz@show@length](#3,tkz@lltmp)
+\endgroup
+}
+
+%<--------------------------------------------------------------------------–>
+% tkzLineOrth
+%<--------------------------------------------------------------------------–>
+% pas de projection ortho car le point peut être sur la droite.
+% manque les tests . Il faudrait voir si on peut projeter et choisir
+\def\tkzShowOrthLine{\pgfutil@ifnextchar[{\tkz@ShowOrthLine}{\tkz@ShowOrthLine[]}}
+\def\tkz@ShowOrthLine[#1](#2,#3)(#4){%
+\begingroup
+\pgfkeys{show/.cd, ratio = .75,
+ length = 1,
+ gap = -1} % ????
+\pgfkeys{show/.cd,#1} %????
+ \tkzVecKOrth(#2,#3)
+ \pgfnodealias{tkz@OLtmp}{tkzPointResult}
+ \tkz@VecKCoLinear[1](#2,tkz@OLtmp,#4)
+ \pgfnodealias{tkzPointCo}{tkzPointResult}
+ \tkzInterLL(#2,#3)(#4,tkzPointCo)
+ \pgfnodealias{tkzPOpoint}{tkzPointResult}
+ \tkzCalcLength(#4,tkzPOpoint)
+ \tkzGetLength{tkz@mathLen}
+ \tkz@VecKNorm[1](#2,#3)
+ \pgfnodealias{PO@tmp}{tkzPointResult}
+ \tkz@VecKCoLinear[1](#2,PO@tmp,tkzPOpoint)
+ \pgfnodealias{PO@tmp2}{tkzPointResult}
+ \tkz@VecKCoLinear[-1](#2,PO@tmp,tkzPOpoint)
+ \pgfnodealias{PO@tmp1}{tkzPointResult}
+ \tkz@VecKCoLinear[2](tkzPOpoint,PO@tmp1,tkzPOpoint)
+ \pgfnodealias{PO@1}{tkzPointResult}
+ \tkz@VecKCoLinear[2](tkzPOpoint,PO@tmp2,tkzPOpoint)
+ \pgfnodealias{PO@2}{tkzPointResult}
+ \ifdim\tkz@mathLen pt>10 pt\relax
+ \tkz@VecKNorm[1](#4,tkzPOpoint)
+ \pgfnodealias{PO@tmp1}{tkzPointResult}
+ \else
+ \tkz@VecKOrthNorm[1](tkzPOpoint,PO@2)
+ \pgfnodealias{PO@tmp1}{tkzPointResult}
+ \fi
+ \tkz@VecKCoLinear[-\tkz@show@gap](PO@tmp1,tkzPOpoint,tkzPOpoint)
+ \pgfnodealias{PO@3}{tkzPointResult}
+ \tkzCompass[#1,length=\tkz@show@ratio *\tkz@show@length](#4,PO@1)
+ \tkzCompass[#1,length=\tkz@show@ratio *\tkz@show@length](#4,PO@2)
+ \tkzCompass[#1,length=\tkz@show@ratio *\tkz@show@length](PO@1,PO@3)
+ \tkzCompass[#1,length=\tkz@show@length](PO@2,PO@3)
+\endgroup
+}
+%<-------------------------------------------------------------------------–>
+% bisector Line
+%<-------------------------------------------------------------------------–>
+\def\tkzShowBisectorLine{%
+ \pgfutil@ifnextchar[{\tkz@ShowBisectorLine}{\tkz@ShowBisectorLine[]}}
+\def\tkz@ShowBisectorLine[#1](#2,#3,#4){%
+\begingroup
+\pgfkeys{show/.cd, gap = 2,
+ ratio =. 5,
+ length = 1,
+ size = 1}
+\pgfkeys{show/.cd,#1}
+ \tkzVecKNorm(#3,#2)
+ \pgfnodealias{tkz@pt1}{tkzPointResult}
+ \tkzVecKNorm(#3,#4)
+ \pgfnodealias{tkz@pt2}{tkzPointResult}
+ \tkzDefMidPoint(tkz@pt1,tkz@pt2)
+ \pgfnodealias{tkz@pt3}{tkzPointResult}
+ \tkzDefEquilateral(tkz@pt2,tkz@pt1)
+ \pgfnodealias{tkz@pt4}{tkzPointResult}
+ \tkzDefMidPoint(tkz@pt3,tkz@pt4)
+ \pgfnodealias{tkz@ptm}{tkzPointResult}
+ \tkzVecKNorm(#3,tkz@ptm)
+ \pgfnodealias{tkzBisPoint}{tkzPointResult}
+ \tkzVecKNorm[\tkz@show@size](#3,#2)
+ \pgfnodealias{BI@1}{tkzPointResult}
+ \tkzVecKNorm[\tkz@show@size](#3,#4)
+ \pgfnodealias{BI@2}{tkzPointResult}
+ \tkzVecK[\tkz@show@gap](#3,tkzBisPoint)
+ \pgfnodealias{tkzBisPoint}{tkzPointResult}
+ \tkzCompass[#1,length=\tkz@show@ratio *\tkz@show@length](#3,BI@1)
+ \tkzCompass[#1,length=\tkz@show@ratio *\tkz@show@length](#3,BI@2)
+ \tkzCompass[#1,length=\tkz@show@length](BI@1,tkzBisPoint)
+ \tkzCompass[#1,length=\tkz@show@ratio *\tkz@show@length](BI@2,tkzBisPoint)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Transformations Géométriques
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% The SHOW
+%<--------------------------------------------------------------------------–>
+\def\tkz@numst{0}
+\pgfkeys{/showtsf/.cd,
+ reflection/.code args={over #1--#2}{%
+ \def\tkzdeb{#1}
+ \def\tkzfin{#2}
+ \def\tkz@numst{0}},
+ symmetry/.code args={center #1}{%
+ \def\tkzcenter{#1}
+ \def\tkz@numst{1}},
+ projection/.code args={onto #1--#2}{%
+ \def\tkzdeb{#1}
+ \def\tkzfin{#2}
+ \def\tkz@numst{2}},
+translation/.code args={from #1 to #2}{%
+ \def\tkzfrom{#1}%
+ \def\tkzto{#2}%
+ \def\tkz@numst{3}},
+ K/.code = \def\tkz@koeff{#1},
+ length/.code = \def\tkz@show@length{#1},
+ ratio/.code = \def\tkz@show@ratio{#1},
+ gap/.code = \def\tkz@show@gap{#1},
+ size/.code = \def\tkz@show@size{#1},
+/showtsf/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
+ \pgfkeysalso{\searchname/.try=#1,
+ /compass/\searchname/.retry=#1,
+ /tikz/\searchname/.retry=#1}}
+}
+%<--------------------------------------------------------------------------–>
+\def\tkzShowTransformation{\pgfutil@ifnextchar[{\tkz@ShowTransformation}{%
+ \tkz@ShowTransformation[]}}
+\def\tkz@ShowTransformation[#1](#2){%
+\begingroup
+ \pgfqkeys{/showtsf}{K=1,gap=2,size=1,ratio=.5,length=1}
+ \pgfqkeys{/showtsf}{#1}
+ \pgfinterruptboundingbox
+\ifcase\tkz@numst%
+ % first case 0
+ \tkzShowSymOrth[#1](\tkzdeb,\tkzfin)(#2)
+ \or% 1
+ \tkzShowCSym[#1](\tkzcenter)(#2)
+ \or% 2
+ \tkzShowProjection[#1](\tkzdeb,\tkzfin)(#2)
+ \or% 3
+ \tkzShowTranslation[#1](\tkzfrom,\tkzto)(#2)
+ \fi
+ \endpgfinterruptboundingbox
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+\def\tkzShowTranslation{\pgfutil@ifnextchar[{\tkz@ShowTranslation}{%
+ \tkz@ShowTranslation[]}}
+
+\def\tkz@ShowTranslation[#1](#2,#3)(#4){%
+\begingroup
+\tkz@VecKCoLinear[1](#2,#3,#4) \pgfnodealias{tkz@lltmp}{tkzPointResult}
+\tkzCompass[#1](#4,tkz@lltmp)
+\tkzCompass[#1,length=\tkz@show@ratio*\tkz@show@length](#3,tkz@lltmp)
+\endgroup}
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+\def\tkzShowSymOrth{\pgfutil@ifnextchar[{\tkz@ShowSymOrth}{%
+ \tkz@ShowSymOrth[]}}
+\def\tkz@ShowSymOrth[#1](#2,#3)(#4){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{#3}{center}}%
+ \tkz@ax =\pgf@y%
+ \tkz@ay =\pgf@x%
+ \path[coordinate](#4)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point);
+ \tkzInterLL(#2,#3)(#4,tkz@point)
+ \pgfnodealias{tkzPointofSym}{tkzPointResult}
+ \tkz@VecK[2](#4,tkzPointofSym)
+ \pgfnodealias{tkz@pointtsf}{tkzPointResult}
+ \tkzCompass[#1](#2,#4)
+ \tkzCompass[#1,length=\tkz@show@ratio*\tkz@show@length](#3,#4)
+ \tkzCompass[#1](#2,tkz@pointtsf)
+ \tkzCompass[#1,length=\tkz@show@ratio*\tkz@show@length](#3,tkz@pointtsf)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+\def\tkzShowCSym{\pgfutil@ifnextchar[{\tkz@ShowCSym}{\tkz@ShowCSym[]}}
+
+\def\tkz@ShowCSym[#1](#2)(#3){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{#3}{center}}%
+ \tkz@ax=\pgf@x%
+ \tkz@ay=\pgf@y%
+\path[coordinate](#2)--++(-\tkz@ax,-\tkz@ay) coordinate (tkz@pointtsf);
+ \tkzCompass[#1](#2,tkz@pointtsf)
+ \tkzCompass[#1](#2,#3)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+\def\tkzShowProjection{\pgfutil@ifnextchar[{\tkz@ShowProjection}{%
+ \tkz@ShowProjection[]}}
+\def\tkz@ShowProjection[#1](#2,#3)(#4){%
+\begingroup
+ \pgfpointdiff{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{#3}{center}}%
+ \tkz@ax =\pgf@y%
+ \tkz@ay =\pgf@x%
+ \path[coordinate](#4)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point);
+ \tkzInterLL(#2,#3)(#4,tkz@point)
+ \pgfnodealias{tkz@pointtsf}{tkzPointResult}
+ \tkz@VecKCoLinear[1](#2,#3,tkz@pointtsf)
+ \pgfnodealias{SO@tmp1}{tkzPointResult}
+ \tkz@VecKCoLinear[-1](#2,#3,tkz@pointtsf)
+ \pgfnodealias{SO@tmp2}{tkzPointResult}
+ \tkz@VecKNorm[\tkz@show@size](tkz@pointtsf,SO@tmp1)
+ \pgfnodealias{SO@1}{tkzPointResult}
+ \tkz@VecKNorm[\tkz@show@size](tkz@pointtsf,SO@tmp2)
+ \pgfnodealias{SO@2}{tkzPointResult}
+ \tkz@VecKNorm[-\tkz@show@gap](tkz@pointtsf,#4)
+ \pgfnodealias{SO@3}{tkzPointResult}
+ \tkzCompass[#1](#4,SO@1)
+ \tkzCompass[#1](#4,SO@2)
+ \tkzCompass[#1](SO@1,SO@3)
+ \tkzCompass[#1,length=\tkz@show@ratio*\tkz@show@length](SO@2,SO@3)
+\endgroup
+}
+%<-------------------------------------------------------------------------–>
+%<-------------------------------------------------------------------------–>
+
+\makeatother
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-triangles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-triangles.tex
new file mode 100644
index 00000000000..0abc2e8166d
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-eu-triangles.tex
@@ -0,0 +1,509 @@
+% tkz-obj-eu-triangles.tex
+% Copyright 2019 by Alain Matthes
+% This file may be distributed and/or modified
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+\typeout{2020/01/23 3.01c tkz-obj-eu-triangles.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+% Triangle Equilateral
+%<--------------------------------------------------------------------------–>
+\def\tkzDefEquilateral(#1,#2){
+\begingroup
+\tkzDefMidPoint(#1,#2)
+ \tkzURotateAngle(#1,60)(#2)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+
+\def\tkzDrawEquilateral{\pgfutil@ifnextchar[{\tkz@Equilateral}{%
+ \tkz@Equilateral[]}}
+
+\def\tkz@Equilateral[#1](#2,#3){%
+\begingroup
+ \tkzURotateAngle(#2,60)(#3)
+ \tkzDrawPolygon[#1](#2,#3,tkzPointResult)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Triangle OneTwo
+%<--------------------------------------------------------------------------–>
+\def\tkzPhi{1.618034}
+\def\tkzInvPhi{0.618034}
+\def\tkzSqrtPhi{1.27202}
+
+\def\tkzDefTwoOne(#1,#2){
+\begingroup
+ \tkzVecKOrth[-.5](#2,#1)
+ \endgroup
+}
+\def\tkzDefPythagore(#1,#2){
+\begingroup
+ \tkzVecKOrth[-0.75](#2,#1)
+\endgroup
+}
+\def\tkzDefSchoolTriangle(#1,#2){
+\begingroup
+ \tkzVecKOrth[-1](#2,#1)
+ \pgfnodealias{tkz@a}{tkzPointResult}
+ \tkzURotateAngle(#1,30)(#2)
+ \tkzInterLL(#1,tkzPointResult)(#2,tkz@a)
+\endgroup
+}
+\def\tkzDefGoldTriangle(#1,#2){
+\begingroup
+ \tkzURotateAngle(#1,36)(#2)
+\endgroup
+}
+\def\tkzDefEuclideTriangle(#1,#2){
+\begingroup
+ \tkzURotateAngle(#1,72)(#2)
+ \tkzUHomo(#1,\tkzPhi)(tkzPointResult)
+\endgroup
+}
+\def\tkzDefGoldenTriangle(#1,#2){
+\begingroup
+ \tkzVecKOrth[-\tkzInvPhi](#2,#1)
+\endgroup
+}
+\def\tkzDefCheopsTriangle(#1,#2){
+\begingroup
+\tkzDefMidPoint(#1,#2)
+ \tkzVecKOrth[-\tkzSqrtPhi](tkzPointResult,#1)
+\endgroup
+}
+\def\tkzDefTwoAnglesTriangle(#1,#2){
+\begingroup
+ \tkzURotateAngle(#1,\tkz@alpha)(#2)
+ \pgfnodealias{tkz@pta}{tkzPointResult}
+ \tkzURotateAngle(#2,-\tkz@beta)(#1)
+ \pgfnodealias{tkz@ptb}{tkzPointResult}
+ \tkzInterLL(#1,tkz@pta)(#2,tkz@ptb)
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Triangles
+%<--------------------------------------------------------------------------–>
+
+\def\tkz@numtr{0}
+\pgfkeys{%
+ /deftriangle/.cd,
+ equilateral/.code = \def\tkz@numtr{0},
+ half/.code = \def\tkz@numtr{1},
+ pythagore/.code = \def\tkz@numtr{2},
+ school/.code = \def\tkz@numtr{3},
+ golden/.code = \def\tkz@numtr{4},
+ sublime/.code = \def\tkz@numtr{4},
+ euclide/.code = \def\tkz@numtr{5},
+ gold/.code = \def\tkz@numtr{6},
+ cheops/.code = \def\tkz@numtr{7},
+ two angles/.code args = {#1 and #2} { \def\tkz@numtr{8}%
+ \def\tkz@alpha{#1}%
+ \def\tkz@beta{#2}}
+}
+
+\def\tkzDefTriangle{\pgfutil@ifnextchar[{\tkz@DefTriangle}{\tkz@DefTriangle[]}}
+\def\tkz@DefTriangle[#1](#2,#3){%
+\begingroup
+\pgfkeys{/deftriangle/.cd,equilateral}
+\pgfqkeys{/deftriangle}{#1}
+\ifcase\tkz@numtr%
+ \tkzDefEquilateral(#2,#3)
+ \or% 1
+ \tkzDefTwoOne(#2,#3)
+ \or% 2
+ \tkzDefPythagore(#2,#3)
+ \or% 3
+ \tkzDefSchoolTriangle(#2,#3)
+ \or% 4
+ \tkzDefGoldenTriangle(#2,#3)
+ \or% 5
+ \tkzDefEuclideTriangle(#2,#3)
+ \or% 6
+ \tkzDefGoldTriangle(#2,#3)
+ \or% 7
+ \tkzDefCheopsTriangle(#2,#3)
+ \or% 8
+ \tkzDefTwoAnglesTriangle(#2,#3) \fi
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Draw Triangles
+%<--------------------------------------------------------------------------–>
+
+\def\tkz@numdtr{0}
+\pgfkeys{/drawtriangle/.cd,
+ equilateral/.code = {\def\tkz@numdtr{0}},
+ half/.code = {\def\tkz@numdtr{1}},
+ pythagore/.code = {\def\tkz@numdtr{2}},
+ school/.code = {\def\tkz@numdtr{3}},
+ golden/.code = {\def\tkz@numdtr{4}},
+ sublime/.code = {\def\tkz@numdtr{4}},
+ euclide/.code = {\def\tkz@numdtr{5}},
+ gold/.code = {\def\tkz@numdtr{6}},
+ cheops/.code = {\def\tkz@numdtr{7}},
+ two angles/.code args = {#1 and #2}{\def\tkz@numdtr{8}%
+ \def\tkz@alpha{#1}%
+ \def\tkz@beta{#2}},
+ equilateral,
+ /drawtriangle/.search also={/tikz}
+}
+
+\def\tkzDrawTriangle{\pgfutil@ifnextchar[{\tkz@DrawTriangle}{%
+ \tkz@DrawTriangle[]}}
+\def\tkz@DrawTriangle[#1](#2,#3){%
+\begingroup
+\pgfkeys{/drawtriangle/.cd,equilateral}
+\pgfqkeys{/drawtriangle}{#1}
+\ifcase\tkz@numdtr%
+ \tkzDefEquilateral(#2,#3)
+\or% 1
+ \tkzDefTwoOne(#2,#3)
+\or% 2
+ \tkzDefPythagore(#2,#3)
+\or% 3
+ \tkzDefSchoolTriangle(#2,#3)
+\or% 4
+ \tkzDefGoldenTriangle(#2,#3)
+\or% 5
+ \tkzDefEuclideTriangle(#2,#3)
+\or% 6
+ \tkzDefGoldTriangle(#2,#3)
+\or% 7
+ \tkzDefCheopsTriangle(#2,#3)
+\or% 8
+ \tkzDefTwoAnglesTriangle(#2,#3)
+\fi
+ \draw[/drawtriangle/.cd,line style,#1] (#2)--(#3)--(tkzPointResult)--cycle;
+\endgroup
+}
+
+%<--------------------------------------------------------------------------–>
+% les triangles sspécifiques
+%<--------------------------------------------------------------------------–>
+
+%<--------------------------------------------------------------------------–
+\def\tkz@numtspc{0}
+\pgfkeys{/tkzDefSpcTriangle/.cd,
+ in/.code = \def\tkz@numtspc{0},
+ incentral/.code = \def\tkz@numtspc{0},
+ ex/.code = \def\tkz@numtspc{1},
+ excentral/.code = \def\tkz@numtspc{1},
+ extouch/.code = \def\tkz@numtspc{2},
+ intouch/.code = \def\tkz@numtspc{3},
+ contact/.code = \def\tkz@numtspc{3},
+ centroid/.code = \def\tkz@numtspc{4},
+ medial/.code = \def\tkz@numtspc{4},
+ orthic/.code = \def\tkz@numtspc{5},
+ ortho/.code = \def\tkz@numtspc{5},
+ feuerbach/.code = \def\tkz@numtspc{6},
+ euler/.code = \def\tkz@numtspc{7},
+ tangential/.code = \def\tkz@numtspc{8},
+ symmedian/.code = \def\tkz@numtspc{9},
+ name/.store in = \tkz@pttr@name,
+ name = {},
+ centroid,
+ }
+\def\tkzDefSpcTriangle{\pgfutil@ifnextchar[{\tkz@DefSpcTriangle}{%
+ \tkz@DefSpcTriangle[]}}
+\def\tkz@DefSpcTriangle[#1](#2)#3{%
+\begingroup
+\pgfqkeys{/tkzDefSpcTriangle}{#1}
+\ifcase\tkz@numtspc%
+ \tkzDefIncentralTriangle(#2){#3}
+ \or% 1
+ \tkzDefExcentralTriangle(#2){#3}
+ \or% 2
+ \tkzDefExtouchTriangle(#2){#3}
+ \or% 3
+ \tkzDefIntouchTriangle(#2){#3}
+ \or% 4
+ \tkzDefCentroidTriangle(#2){#3}
+ \or% 5
+ \tkzDefOrthicTriangle(#2){#3}
+ \or% 6
+ \tkzDefFeuerbachTriangle(#2){#3}
+ \or% 7
+ \tkzDefEulerTriangle(#2){#3}
+ \or% 8
+ \tkzDefTangentialTriangle(#2){#3}
+ \or% 8
+ \tkzDefSymmedianTriangle(#2){#3}
+ \fi
+\endgroup
+}
+
+
+\pgfkeys{/setuppttr/.is family}
+\def\SetUpPTTR#1{\pgfqkeys{/setuppttr}{#1}}
+\pgfkeys{/setuppttr/.cd,
+ name/.store in = \tkz@pttr@name,
+ name = {}
+}
+\def\tkz@recuplast(#1,#2){\def\tkz@last{#1}}
+\def\tkz@stop{\tkz@stop}
+%<--------------------------------------------------------------------------–
+% InCentral
+%<--------------------------------------------------------------------------–
+% The Incentral triangle is the triangle whose vertices are determined by
+% theintersections of the reference triangle’s angle bisectors with the
+% respective opposite sides.
+%<--------------------------------------------------------------------------–>
+\def\@DefIncentralTriangle(#1,#2,#3)(#4,#5){%
+ \def\tkz@tmp{#5}%
+ \tkz@recuplast(#3)
+ \tkzDefBisectorLine(#2,#1,\tkz@last)
+ \tkzInterLL(#2,\tkz@last)(#1,tkzPointResult)
+ \pgfnodealias{#4}{tkzPointResult}
+ \ifx\tkz@tmp\tkz@stop\else\@DefIncentralTriangle(#2,#3)(#5)\fi
+ \pgfnodealias{\tkz@pttr@name#4}{#4}
+}
+
+
+\def\tkzDefIncentralTriangle{\pgfutil@ifnextchar[{%
+ \tkz@DefIncentralTriangle}{%
+ \tkz@DefIncentralTriangle[]}}
+
+\def\tkz@DefIncentralTriangle[#1](#2)#3{%
+\begingroup
+ \SetUpPTTR{#1}
+ \pgfinterruptboundingbox
+ \@DefIncentralTriangle(#2,#2)(#3,\tkz@stop)
+ \endpgfinterruptboundingbox
+\endgroup
+}
+\let\tkzIncentralTriangle\tkzInExcentralTriangle
+%<--------------------------------------------------------------------------–
+% ExCentral
+%<--------------------------------------------------------------------------–
+
+%<--------------------------------------------------------------------------–>
+\def\@DefExcentralTriangle(#1,#2,#3)(#4,#5){%
+ \def\tkz@tmp{#5}%
+ \tkz@recuplast(#3)
+ \tkzDefExCircle(#2,#1,\tkz@last)
+ \pgfnodealias{#4}{tkzPointResult}
+ \ifx\tkz@tmp\tkz@stop\else\@DefExcentralTriangle(#2,#3)(#5)\fi
+ \pgfnodealias{\tkz@pttr@name#4}{#4}
+}
+
+\def\tkzDefExcentralTriangle{\pgfutil@ifnextchar[{%
+ \tkz@DefExcentralTriangle}{%
+ \tkz@DefExcentralTriangle[]}}
+
+\def\tkz@DefExcentralTriangle[#1](#2)#3{%
+\begingroup
+ \SetUpPTTR{#1}
+ \@DefExcentralTriangle(#2,#2)(#3,\tkz@stop)
+\endgroup
+}
+\let\tkzExcentralTriangle\tkzDefExcentralTriangle
+%<--------------------------------------------------------------------------–>
+% Intouch Triangle
+% The contact triangle of a triangle ABC, also called the intouch triangle, is the triangle formed by the points of tangency of the incircle of ABC with ABC.
+%<--------------------------------------------------------------------------–>
+\def\@DefIntouchTriangle(#1,#2,#3)(#4,#5){%
+ \def\tkz@tmp{#5}%
+ \tkz@recuplast(#3)
+ \tkzUProjection(#2,\tkz@last)(tkz@pt)
+ \pgfnodealias{#4}{tkzPointResult}
+ \ifx\tkz@tmp\tkz@stop\else\@DefIntouchTriangle(#2,#3)(#5)\fi
+ \pgfnodealias{\tkz@pttr@name#4}{#4}
+}
+
+\def\tkzDefIntouchTriangle{\pgfutil@ifnextchar[{%
+ \tkz@DefIntouchTriangle}{%
+ \tkz@DefIntouchTriangle[]}}
+
+\def\tkz@DefIntouchTriangle[#1](#2)#3{%
+\begingroup
+ \SetUpPTTR{#1}
+ \tkzInCenter(#2)
+ \pgfnodealias{tkz@pt}{tkzPointResult}
+ \@DefIntouchTriangle(#2,#2)(#3,\tkz@stop)
+\endgroup
+}
+\let\tkzDefContactTriangle\tkzDefIntouchTriangle
+%<--------------------------------------------------------------------------–>
+% Extouch Triangle
+% The extouch triangle T_1T_2T_3 is the triangle formed by the points of tangency of a triangle A_1A_2A_3 with its excircles J_1, J_2, and J_3.
+%<--------------------------------------------------------------------------–>
+\def\tkzDefExtouchTriangle{\pgfutil@ifnextchar[{%
+ \tkz@DefExtouchTriangle}{%
+ \tkz@DefExtouchTriangle[]}}
+
+\def\tkz@DefExtouchTriangle[#1](#2,#3,#4)#5{%
+\begingroup
+ \SetUpPTTR{#1}
+ \foreach \name [count=\i] in {#5} {%
+ \global\expandafter\edef\csname tkz@point\i\endcsname{\name}
+ }
+ \tkzDefExcentralTriangle(#2,#3,#4){tkz@a,tkz@b,tkz@c}
+ \tkzUProjection(#3,#4)(tkz@a)
+ \pgfnodealias{\tkz@pttr@name\csname tkz@point1\endcsname}{tkzPointResult}
+ \tkzUProjection(#2,#3)(tkz@c)
+ \pgfnodealias{\tkz@pttr@name\csname tkz@point3\endcsname}{tkzPointResult}
+ \tkzUProjection(#2,#4)(tkz@b)
+ \pgfnodealias{\tkz@pttr@name\csname tkz@point2\endcsname}{tkzPointResult}
+\endgroup
+}
+
+%<--------------------------------------------------------------------------–>
+% Feuerbach triangle The Feuerbach triangle is the triangle formed by the three points of tangency of the nine-point circle with the excircles
+
+\def\tkzDefFeuerbachTriangle{\pgfutil@ifnextchar[{%
+ \tkz@DefFeuerbachTriangle}{\tkz@DefFeuerbachTriangle[]}}
+
+\def\tkz@DefFeuerbachTriangle[#1](#2,#3,#4)#5{%
+\begingroup
+ \SetUpPTTR{#1}
+ \foreach \name [count=\i] in {#5} {%
+ \global\expandafter\edef\csname tkz@point\i\endcsname{\name}
+ }
+ \tkzDefExCircle(#2,#3,#4)
+ \pgfnodealias{tkz@b}{tkzPointResult} \tkzGetLength{tkz@rb}
+ \tkzDefExCircle(#3,#4,#2)
+ \pgfnodealias{tkz@c}{tkzPointResult} \tkzGetLength{tkz@rc}
+ \tkzDefExCircle(#4,#2,#3)
+ \pgfnodealias{tkz@a}{tkzPointResult} \tkzGetLength{tkz@ra}
+ \tkzInterLC[R](#3,tkz@b)(tkz@b,\tkz@rb pt)
+ \tkzGetFirstPoint{\tkz@pttr@name\csname tkz@point2\endcsname}
+ \tkzInterLC[R](#4,tkz@c)(tkz@c,\tkz@rc pt)
+ \tkzGetFirstPoint{\tkz@pttr@name\csname tkz@point3\endcsname}
+ \tkzInterLC[R](#2,tkz@a)(tkz@a,\tkz@ra pt)
+ \tkzGetFirstPoint{\tkz@pttr@name\csname tkz@point1\endcsname}
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Centroid
+%<--------------------------------------------------------------------------–>
+% The medial triangle or midpoint triangle of a triangle ABC
+\def\@DefCentroidTriangle(#1,#2,#3)(#4,#5){%
+ \def\tkz@tmp{#5}%
+ \tkz@recuplast(#3)
+ \pgfcoordinate{#4}{%
+ \pgfpointscale{0.5}{%
+ \pgfpointadd{\pgfpointanchor{#2}{center}}%
+ {\pgfpointanchor{\tkz@last}{center}}}
+ }%
+ \ifx\tkz@tmp\tkz@stop\else\@DefCentroidTriangle(#2,#3)(#5)\fi
+ \pgfnodealias{\tkz@pttr@name#4}{#4}
+ }
+\def\tkzDefCentroidTriangle{\pgfutil@ifnextchar[{\tkz@DefCentroidTriangle}
+ {\tkz@DefCentroidTriangle[]}}
+\def\tkz@DefCentroidTriangle[#1](#2)#3{%
+\begingroup
+ \SetUpPTTR{#1}
+ \@DefCentroidTriangle(#2,#2)(#3,\tkz@stop)
+\endgroup
+}
+\let\tkzDefMedialTriangle\tkzDefCentroidTriangle
+\let\tkzDefMidpointTriangle\tkzDefCentroidTriangle
+%<--------------------------------------------------------------------------–>
+% OrthicTriangle H Ha Hb Hc
+%<--------------------------------------------------------------------------–>
+% Orthic Triangle
+%<--------------------------------------------------------------------------–>
+\def\@DefOrthicTriangle(#1,#2,#3)(#4,#5){%
+ \def\tkz@tmp{#5}%
+ \tkz@recuplast(#3)
+ \tkzUProjection(#2,\tkz@last)(#1)
+ \pgfnodealias{#4}{tkzPointResult}
+ \ifx\tkz@tmp\tkz@stop\else\@DefOrthicTriangle(#2,#3)(#5)\fi
+ \pgfnodealias{\tkz@pttr@name#4}{#4}
+}
+
+\def\tkzDefOrthicTriangle{\pgfutil@ifnextchar[{\tkz@DefOrthicTriangle}
+ {\tkz@DefOrthicTriangle[]}}
+\def\tkz@DefOrthicTriangle[#1](#2)#3{%
+\begingroup
+ \SetUpPTTR{#1}
+ \@DefOrthicTriangle(#2,#2)(#3,\tkz@stop)
+\endgroup
+}
+\let\tkzDefAltitudeTriangle\tkzDefOrthicTriangle
+
+%<--------------------------------------------------------------------------–>
+% The Euler triangle of a triangle ABC is the triangle E_AE_BE_C whose vertices are the midpoints of the segments joining the orthocenter H with the respective vertices. The vertices of the triangle are known as the Euler points, and lie on the nine-point circle.
+
+\def\tkzDefEulerTriangle{\pgfutil@ifnextchar[{%
+ \tkz@DefEulerTriangle}{\tkz@DefEulerTriangle[]}}
+\def\tkz@DefEulerTriangle[#1](#2,#3,#4)#5{%
+\begingroup
+ \SetUpPTTR{#1}
+ \pgfinterruptboundingbox
+ \tkzOrthoCenter(#2,#3,#4)
+ \pgfnodealias{tkz@e}{tkzPointResult}
+ \tkzDefMidPoint(#2,tkz@e)
+ \pgfnodealias{tkz@m1}{tkzPointResult}
+ \tkzDefMidPoint(#3,tkz@e)
+ \pgfnodealias{tkz@m2}{tkzPointResult}
+ \tkzDefMidPoint(#4,tkz@e)
+ \pgfnodealias{tkz@m3}{tkzPointResult}
+ \endpgfinterruptboundingbox
+ \foreach \name [count=\i] in {#5} {%
+ \coordinate (\tkz@pttr@name\name) at (tkz@m\i);
+ }
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+%
+%<--------------------------------------------------------------------------–>
+\def\tkzDefTangentialTriangle{\pgfutil@ifnextchar[{%
+ \tkz@DefTangentialTriangle}{\tkz@DefTangentialTriangle[]}}
+\def\tkz@DefTangentialTriangle[#1](#2,#3,#4)#5{%
+\begingroup
+ \SetUpPTTR{#1}
+ \tkzCircumCenter(#2,#3,#4)
+ \pgfnodealias{tkz@circ}{tkzPointResult}
+ \tkzDefLine[orthogonal=through #2](tkz@circ,#2)
+ \pgfnodealias{tkz@pta}{tkzPointResult}
+ \tkzDefLine[orthogonal=through #3](tkz@circ,#3)
+ \pgfnodealias{tkz@ptb}{tkzPointResult}
+ \tkzDefLine[orthogonal=through #4](tkz@circ,#4)
+ \pgfnodealias{tkz@ptc}{tkzPointResult}
+ \tkzInterLL(#2,tkz@pta)(#3,tkz@ptb)
+ \pgfnodealias{tkz@tg3}{tkzPointResult}
+ \tkzInterLL(#3,tkz@ptb)(#4,tkz@ptc)
+ \pgfnodealias{tkz@tg1}{tkzPointResult}
+ \tkzInterLL(#4,tkz@ptc)(#2,tkz@pta)
+ \pgfnodealias{tkz@tg2}{tkzPointResult}
+ \foreach \name [count=\i] in {#5} {%
+ \coordinate (\tkz@pttr@name\name) at (tkz@tg\i);
+ }
+\endgroup
+}
+%<--------------------------------------------------------------------------–
+% tkzDefSymmedianLine
+%<--------------------------------------------------------------------------–
+% The Incentral triangle is the triangle whose vertices are determined by
+% theintersections of the reference triangle’s angle bisectors with the
+% respective opposite sides.
+%<--------------------------------------------------------------------------–>
+\def\@DefSymmedianTriangle(#1,#2,#3)(#4,#5){%
+ \def\tkz@tmp{#5}%
+ \tkz@recuplast(#3)
+ \tkzDefSymmedianLine(#2,#1,\tkz@last)
+ \tkzInterLL(#2,\tkz@last)(#1,tkzPointResult)
+ \pgfnodealias{#4}{tkzPointResult}
+ \ifx\tkz@tmp\tkz@stop\else\@DefSymmedianTriangle(#2,#3)(#5)\fi
+ \pgfnodealias{\tkz@pttr@name#4}{#4}
+}
+
+\def\tkzDefSymmedianTriangle{\pgfutil@ifnextchar[{%
+ \tkz@DefSymmedianTriangle}{%
+ \tkz@DefSymmedianTriangle[]}}
+
+\def\tkz@DefSymmedianTriangle[#1](#2)#3{%
+\begingroup
+ \SetUpPTTR{#1}
+ \pgfinterruptboundingbox
+ \@DefSymmedianTriangle(#2,#2)(#3,\tkz@stop)
+ \endpgfinterruptboundingbox
+\endgroup
+}
+
+\makeatother
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lines.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lines.tex
deleted file mode 100644
index 6532c7f92bd..00000000000
--- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-lines.tex
+++ /dev/null
@@ -1,342 +0,0 @@
-% Copyright 2011 by Alain Matthes
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-
-
-\def\fileversion{1.16 c}
-\def\filedate{2011/06/01}
-
-
-%<--------------------------------------------------------------------------–>
-
-%<--------------------------------------------------------------------------–>
-% les lignes
-%<--------------------------------------------------------------------------–>
-\def\tkz@numl{0}
-\pgfkeys{/tkzDefLine/.cd,
- mediator/.code ={\global\def\tkz@numl{0}},
- perpendicular/.code args={through #1} {\global\def\tkz@numl{1}%
- \global\def\tkz@through{#1}},
- orthogonal/.code args={through #1} {\global\def\tkz@numl{1}%
- \global\def\tkz@through{#1}},
- parallel/.code args={through #1}{\global\def\tkz@numl{2}%
- \global\def\tkz@through{#1}},
- bisector/.code ={\global\def\tkz@numl{3}},
- bisector out/.code ={\global\def\tkz@numl{4}},
- K/.code =\def\tkz@koeff{#1}
-}
-
-\def\tkzDefLine{\pgfutil@ifnextchar[{\tkz@DefLine}{%
- \tkz@DefLine[]}}
-\def\tkz@DefLine[#1](#2){%
-\begingroup
-\pgfkeys{/tkzDefLine/.cd,K=1}
-\pgfqkeys{/tkzDefLine}{#1}
-\ifcase\tkz@numl%
- % first case 0
- \tkzDefMediatorLine(#2)
- \or% 1
- \tkzDefOrthLine[\tkz@koeff](#2)
- \or% 2
- \tkzDefLineLL(#2)
- \or% 3
- \tkzDefBisectorLine(#2)
- \or% 4
- \tkzDefBisectorOutLine(#2)
- \fi
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% tkzLineLL revoir out !!
-%<--------------------------------------------------------------------------–>
-\def\tkzDefLineLL(#1,#2){%
-\begingroup% recherche d'un vecteur tq #2#3=#4tkz@point
- \pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#2}{center}}%
- \pgf@xa=\pgf@x%
- \pgf@ya=\pgf@y%
- \path[coordinate](\tkz@through)--+(\pgf@xa,\pgf@ya)%
- coordinate (tkzPointResult);
-\endgroup}%
-%<--------------------------------------------------------------------------–>
-% tkzOrthLine
-%<--------------------------------------------------------------------------–>
-\def\tkzDefOrthLine{\pgfutil@ifnextchar[{\tkz@DefOrthLine}{%
- \tkz@DefOrthLine[1]}}
- \def\tkz@DefOrthLine[#1](#2,#3){%
-\begingroup
- \tkzVecKOrth(#2,#3){tkz@OLtmp}
- \tkz@VecKCoLinear[#1](#2,tkz@OLtmp,\tkz@through){tkzPointResult}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% tkzMediatorLine
-%<--------------------------------------------------------------------------–>
-\def\tkzDefMediatorLine(#1,#2){%
-\begingroup
- \path (#1) -- (#2) coordinate[pos=.5](tkzPointResult);
- \tkzURotateAngle(#1,60)(#2) \tkzGetPoint{tkzFirstPointResult}
- \tkzURotateAngle(#2,60)(#1) \tkzGetPoint{tkzSecondPointResult}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% BisectorLine % pb avec un angle plat
-%<--------------------------------------------------------------------------–>
-\def\tkzDefBisectorLine(#1,#2,#3){%
-\begingroup
- \tkzDuplicateLen(#2,#1)(#2,#3) \tkzGetPoint{tkz@tmp}
- \tkzURotateAngle(tkz@tmp,60)(#1) \tkzGetPoint{tkzPointResult}
- % \tkzVecKNorm[5](#2,#1){tkz@pt1}
- % \tkzVecKNorm[5](#2,#3){tkz@pt2}
- % \tkzDefEquilateral(tkz@pt2,tkz@pt1)
- % \tkzVecKNorm(#2,tkzPointResult){tkzPointResult}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Out BisectorLine
-%<--------------------------------------------------------------------------–>
-\def\tkzDefBisectorOutLine(#1,#2,#3){%
-\begingroup
- \tkzVecKNorm(#2,#1){tkz@pt1}
- \tkzVecKNorm[-1](#2,#3){tkz@pt2}
- \tkzDefEquilateral(tkz@pt2,tkz@pt1)\tkzGetPoint{tkz@pt3}
- \tkzVecKNorm(#2,tkz@pt3){tkzPointResult}
-\endgroup
-}
-%<-------------------------------------------------------------------------–>
-\def\tkzLabelLine{\pgfutil@ifnextchar[{\tkz@AddLabelLine}{%
- \tkz@AddLabelLine[]}}
-\def\tkz@AddLabelLine[#1](#2,#3)#4{
- \path (#2) to node[#1]{#4}(#3);
-}
-%<--------------------------------------------------------------------------–>
-% Setup Line
-%<--------------------------------------------------------------------------–>
-
-\tikzset{line style/.style={%
- line width = \tkz@euc@linewidth,
- color = \tkz@euc@linecolor,
- style = \tkz@euc@linestyle,
- add = {\tkz@euc@lineleft} and {\tkz@euc@lineright}}}
-\pgfkeys{%
-setupline/.cd,
-line width/.code = {\global\edef\tkz@line@lw{#1}},
-color/.code = {\global\edef\tkz@line@color{#1}},
-style/.code = {\global\edef\tkz@line@style{#1}},
-add/.code args = {#1 and #2} {\global\edef\tkz@line@left{#1}%
- \global\edef\tkz@line@right{#2} }
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-\def\tkzSetUpLine{\pgfutil@ifnextchar[{\tkzActivOff\tkz@SetUpLine}{%
- \tkzActivOff\tkz@SetUpLine[]}}
-%<--------------------------------------------------------------------------–>
-\def\tkz@SetUpLine[#1]{%
-\tkzActivOff
-\pgfkeys{%
-setupline/.cd,
-line width = \tkz@euc@linewidth,
-color = \tkz@euc@linecolor,
-style = \tkz@euc@linestyle,
-add = {\tkz@euc@lineleft} and {\tkz@euc@lineright}}
-\pgfqkeys{/setupline}{#1}
-\tikzset{line style/.style={%
- color = \tkz@line@color,
- line width = \tkz@line@lw,
- style = \tkz@line@style,
- add = {\tkz@line@left} and {\tkz@line@right}
- }}
-}%
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-% Draw line
-%<--------------------------------------------------------------------------–>
-\pgfkeys{%
-tkzdrawline/.cd,
-start/.code = {\def\tkz@line@start{#1}},%
-end/.code = {\def\tkz@line@end{#1}},
-start style/.code ={\tikzset{tkzstartstyle/.style={#1}}},
-end style/.code ={\tikzset{tkzendstyle/.style={#1}}},
- /tkzdrawline/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1,
- /tikz/\searchname/.retry=#1}}
- }
-
-\def\tkzDrawLine{\pgfutil@ifnextchar[{\tkz@DrawLine}{%
- \tkz@DrawLine[]}}
-\def\tkz@DrawLine[#1](#2,#3){%
-\begingroup
-\pgfkeys{%
-tkzdrawline/.cd,
-start = {} ,
-end = {} ,
-start style={},
-end style={},}
-\pgfqkeys{/tkzdrawline}{#1}
-\draw[ line style,/tkzdrawline/.cd,#1] (#2) to%
- node [at start,left,/tkzdrawline/.cd,tkzstartstyle] {\tkz@line@start}%
- node [at end,right,/tkzdrawline/.cd,tkzendstyle] {\tkz@line@end} (#3);
-\endgroup
-}%
-%<--------------------------------------------------------------------------–>
-\def\tkz@multiLines#1 #2\@nil{%
- \protected@edef\tkz@temp{
- \noexpand \tkzDrawLine[\tkz@optline](#1)}\tkz@temp%
- \def\tkz@nextArg{#2}%
- \ifx\tkzutil@empty\tkz@nextArg
- \let\next\@gobble
- \fi
- \next#2\@nil
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawLines{\pgfutil@ifnextchar[{\tkz@DrawLines}{%
- \tkz@DrawLines[]}}
-\def\tkz@DrawLines[#1](#2){%
-\global\edef\tkz@optline{#1}
-\begingroup
- \let\next\tkz@multiLines
- \next#2 \@nil %
-\endgroup
-}%
-
- %<--------------------------------------------------------------------------–>
-%<--------------------------- The SHOW --------------------------------–>
-%<--------------------------------------------------------------------------–>
-\global\def\tkz@numsh{0}
-\pgfkeys{/show/.cd,
- mediator/.code =\global\def\tkz@numsh{0},
- perpendicular/.code args={through #1} {\global\def\tkz@numsh{1}%
- \global\def\tkz@through{#1}},
- orthogonal/.code args={through #1} {\global\def\tkz@numsh{1}%
- \global\def\tkz@through{#1}},
- parallel/.code args={through #1}{\global\def\tkz@numsh{2}%
- \global\def\tkz@through{#1}},
- bisector/.code = \global\def\tkz@numsh{3},
- K/.code = \def\tkz@koeff{#1},
- length/.code = \def\tkz@show@length{#1},
- ratio/.code = \def\tkz@show@ratio{#1},
- gap/.code = \def\tkz@show@gap{#1},
- size/.code = \def\tkz@show@size{#1},
- /show/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1,
- /compass/\searchname/.retry=#1,
- /tikz/\searchname/.retry=#1}}
- }
-
-\def\tkzShowLine{\pgfutil@ifnextchar[{\tkz@ShowLine}{%
- \tkz@ShowLine[]}}
-\def\tkz@ShowLine[#1](#2){%
-\begingroup
-\pgfqkeys{/show}{K=1,gap=2,ratio=.5,length=1,size=1}
-\pgfqkeys{/show}{#1}
-\ifcase\tkz@numsh%
- % first case 0
- \tkzShowMediatorLine[#1](#2)
- \or% 1
- \tkzShowOrthLine[#1](#2)(\tkz@through)
- \or% 2
- \tkzShowLLLine[#1](#2)(\tkz@through)
- \or% 3
- \tkzShowBisectorLine[#1](#2)
-\fi
-\endgroup
-}
-
-\def\tkzShowMediatorLine{\pgfutil@ifnextchar[{\tkz@ShowMediatorLine}{%
- \tkz@ShowMediatorLine[]}}
-\def\tkz@ShowMediatorLine[#1](#2,#3){%
-\begingroup
-\pgfkeys{%
-show/.cd,
-gap = 2,
-ratio = .5,
-length = 1
-}
-\pgfkeys{show/.cd,#1}
- \path (#2) -- (#3) coordinate[pos=.5](tkzmidpoint);
- \tkzURotateAngle(#2,60)(#3)\tkzGetPoint{tkzFirstPointResult}
- \tkzURotateAngle(#3,60)(#2)\tkzGetPoint{tkzSecondPointResult}
- \tkz@VecKOrthNorm[1](tkzmidpoint,#2){MED@tmp1}
- \tkz@VecKOrthNorm[1](tkzmidpoint,#3){MED@tmp2}
- \tkz@VecKNorm[\tkz@show@gap](tkzmidpoint,MED@tmp1){MED@1}
- \tkz@VecKNorm[\tkz@show@gap](tkzmidpoint,MED@tmp2){MED@2}
- \tkzCompass[#1,length=\tkz@show@ratio*\tkz@show@length](#2,MED@1)
- \tkzCompass[#1](#3,MED@1)
- \tkzCompass[#1,length=\tkz@show@ratio*\tkz@show@length](#2,MED@2)
- \tkzCompass[#1](#3,MED@2)
-\endgroup
-}
-\def\tkzShowLLLine{\pgfutil@ifnextchar[{\tkz@ShowLLLine}{%
- \tkz@ShowLLLine[]}}
-\def\tkz@ShowLLLine[#1](#2,#3)(#4){%
-\begingroup
-\pgfkeys{show/.cd,gap=2,ratio=.75,length=1}
-\pgfkeys{show/.cd,#1}
- \tkz@VecKCoLinear[1](#2,#3,#4){tkz@lltmp}
- \tkzCompass[#1](#4,tkz@lltmp)
- \tkzCompass[#1,length=\tkz@show@ratio*\tkz@show@length](#3,tkz@lltmp)
-\endgroup
-}
-
-%<--------------------------------------------------------------------------–>
-% tkzLineOrth
-%<--------------------------------------------------------------------------–>
-% pas de projection ortho car le point peut être sur la droite.
-% manque les tests . Il faudrait voir si on peut projeter et choisir
-\def\tkzShowOrthLine{\pgfutil@ifnextchar[{\tkz@ShowOrthLine}{%
- \tkz@ShowOrthLine[]}}
-\def\tkz@ShowOrthLine[#1](#2,#3)(#4){%
- \begingroup
-\pgfkeys{show/.cd,ratio=.75,length=1,gap=-1} % ????
-\pgfkeys{show/.cd,#1} %????
- \tkzVecKOrth(#2,#3){tkz@OLtmp}
- \tkz@VecKCoLinear[1](#2,tkz@OLtmp,#4){tkzPointCo}
- \tkzInterLL(#2,#3)(#4,tkzPointCo)\tkzGetPoint{tkzPOpoint}
- \tkzCalcLength(#4,tkzPOpoint)\tkzGetLength{tkz@mathLen}
- \tkz@VecKNorm[1](#2,#3){PO@tmp}
- \tkz@VecKCoLinear[1](#2,PO@tmp,tkzPOpoint){PO@tmp2}
- \tkz@VecKCoLinear[-1](#2,PO@tmp,tkzPOpoint){PO@tmp1}
- \tkz@VecKCoLinear[2](tkzPOpoint,PO@tmp1,tkzPOpoint){PO@1}
- \tkz@VecKCoLinear[2](tkzPOpoint,PO@tmp2,tkzPOpoint){PO@2}
- \ifdim\tkz@mathLen pt>10 pt\relax
- \tkz@VecKNorm[1](#4,tkzPOpoint){PO@tmp1}
- \else
- \tkz@VecKOrthNorm[1](tkzPOpoint,PO@2){PO@tmp1}
- \fi
- \tkz@VecKCoLinear[-\tkz@show@gap](PO@tmp1,tkzPOpoint,tkzPOpoint){PO@3}
- \tkzCompass[#1,length=\tkz@show@ratio *\tkz@show@length](#4,PO@1)
- \tkzCompass[#1,length=\tkz@show@ratio *\tkz@show@length](#4,PO@2)
- \tkzCompass[#1,length=\tkz@show@ratio *\tkz@show@length](PO@1,PO@3)
- \tkzCompass[#1,length=\tkz@show@length](PO@2,PO@3)
- \endgroup
- }
-%<-------------------------------------------------------------------------–>
-% bisector Line
-%<-------------------------------------------------------------------------–>
-\def\tkzShowBisectorLine{\pgfutil@ifnextchar[{\tkz@ShowBisectorLine}{%
- \tkz@ShowBisectorLine[]}}
-\def\tkz@ShowBisectorLine[#1](#2,#3,#4){%
-\begingroup
-\pgfkeys{show/.cd,gap=2,ratio=.5,length=1,size=1}
-\pgfkeys{show/.cd,#1}
- \tkzVecKNorm(#3,#2){tkz@pt1}
- \tkzVecKNorm(#3,#4){tkz@pt2}
- \tkzDefEquilateral(tkz@pt2,tkz@pt1)\tkzGetPoint{tkz@pt3}
- \tkzVecKNorm(#3,tkz@pt3){tkzBisPoint}
- \tkzVecKNorm[\tkz@show@size](#3,#2){BI@1}
- \tkzVecKNorm[\tkz@show@size](#3,#4){BI@2}
- \tkzVecK[\tkz@show@gap](#3,tkzBisPoint){tkzBisPoint}
- \tkzCompass[#1,length=\tkz@show@ratio *\tkz@show@length](#3,BI@1)
- \tkzCompass[#1,length=\tkz@show@ratio *\tkz@show@length](#3,BI@2)
- \tkzCompass[#1,length=\tkz@show@length](BI@1,tkzBisPoint)
- \tkzCompass[#1,length=\tkz@show@ratio *\tkz@show@length](BI@2,tkzBisPoint)
- \endgroup
-}
-
-%<-------------------------------------------------------------------------–>
-%<-------------------------------------------------------------------------–>
-
-\endinput
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-polygons.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-polygons.tex
deleted file mode 100644
index 6f7f5441bff..00000000000
--- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-polygons.tex
+++ /dev/null
@@ -1,278 +0,0 @@
-% Copyright 2011 by Alain Matthes
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-
-
-\def\fileversion{1.16 c}
-\def\filedate{2011/06/01}
-
-
-%<--------------------------------------------------------------------------–>
-% Polygon
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawPolygon{\pgfutil@ifnextchar[{\tkz@DrawPolygon}{%
- \tkz@DrawPolygon[]}}
-\def\tkz@DrawPolygon[#1](#2,#3){%
-\begingroup
-\draw[line style,#1] (#2)
- \foreach \tkz@pt in {#3}{--(\tkz@pt)}--cycle;%
-\endgroup
-}
-%<---------------------------- CLIP --------------------------------–>
-%
-%<--------------------------------------------------------------------------–>
-\def\tkzClipPolygon(#1,#2){\path[clip] (#1)
- \foreach \pt in {#2}{--(\pt)}--cycle;
-}
-%<---------------------------- FILL --------------------------------–>
-%
-%<--------------------------------------------------------------------------–>
-\def\tkzFillPolygon{\pgfutil@ifnextchar[{\tkz@FillPolygon}{%
- \tkz@FillPolygon[]}}
-\def\tkz@FillPolygon[#1](#2,#3){%
- \begingroup
- \fill[#1] (#2)
-\foreach \tkz@pt in {#3}{--(\tkz@pt)}--cycle;%
-\endgroup
-}
-
-%<--------------------------------------------------------------------------–>
-% Triangle Equilateral
-%<--------------------------------------------------------------------------–>
-\def\tkzDefEquilateral(#1,#2){
-\begingroup
- \tkzURotateAngle(#1,60)(#2)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-
-\def\tkzDrawEquilateral{\pgfutil@ifnextchar[{\tkz@Equilateral}{%
- \tkz@Equilateral[]}}
-
-\def\tkz@Equilateral[#1](#2,#3){%
-\begingroup
- \tkzURotateAngle(#2,60)(#3)
- \tkzDrawPolygon[#1](#2,#3,tkzPointResult)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Triangle OneTwo
-%<--------------------------------------------------------------------------–>
-\def\tkzPhi{1.618034}
-\def\tkzInvPhi{0.618034}
-\def\tkzSqrtPhi{1.27202}
-
-\def\tkzDefTwoOne(#1,#2){
-\begingroup
- \tkzVecKOrth[-.5](#2,#1){tkzPointResult}
-\endgroup
-}
-\def\tkzDefPythagore(#1,#2){
-\begingroup
- \tkzVecKOrth[-0.75](#2,#1){tkzPointResult}
-\endgroup
-}
-\def\tkzDefSchoolTriangle(#1,#2){
-\begingroup
- \tkzURotateAngle(#1,30)(#2)
- \tkzVecKOrth[-1](#2,#1){tkz@a}
- \tkzInterLL(#1,tkzPointResult)(#2,tkz@a)
-\endgroup
-}
-\def\tkzDefGoldTriangle(#1,#2){
-\begingroup
- \tkzURotateAngle(#1,36)(#2)
-\endgroup
-}
-\def\tkzDefEuclideTriangle(#1,#2){
-\begingroup
- \tkzURotateAngle(#1,72)(#2)
- \tkzUHomo(#1,\tkzPhi)(tkzPointResult)
-\endgroup
-}
-\def\tkzDefGoldenTriangle(#1,#2){
-\begingroup
- \tkzVecKOrth[-\tkzInvPhi](#2,#1){tkzPointResult}
-\endgroup
-}
-\def\tkzDefCheopsTriangle(#1,#2){
-\begingroup
-\tkzDefMidPoint(#1,#2)
- \tkzVecKOrth[-\tkzSqrtPhi](tkzPointResult,#1){tkzPointResult}
-\endgroup
-}
-\def\tkzDefTwoAnglesTriangle(#1,#2){
-\begingroup
- \tkzURotateAngle(#1,\tkz@alpha)(#2) \tkzGetPoint{tkz@pta}
- \tkzURotateAngle(#2,-\tkz@beta)(#1) \tkzGetPoint{tkz@ptb}
- \tkzInterLL(#1,tkz@pta)(#2,tkz@ptb)
-\endgroup
-}
-\def\tkz@numtr{0}
-\pgfkeys{/deftriangle/.cd,
-equilateral/.code = \global\def\tkz@numtr{0},
-half/.code = \global\def\tkz@numtr{1},
-pythagore/.code = \global\def\tkz@numtr{2},
-school/.code = \global\def\tkz@numtr{3},
-golden/.code = \global\def\tkz@numtr{4},
-euclide/.code = \global\def\tkz@numtr{5},
-gold/.code = \global\def\tkz@numtr{6},
-cheops/.code = \global\def\tkz@numtr{7},
-two angles/.code args={#1 and #2} { \global\def\tkz@numtr{8}%
- \global\def\tkz@alpha{#1}%
- \global\def\tkz@beta{#2}}
-}
-
-\def\tkzDefTriangle{\pgfutil@ifnextchar[{\tkz@DefTriangle}{%
- \tkz@DefTriangle[]}}
-\def\tkz@DefTriangle[#1](#2,#3){%
-\begingroup
-\pgfkeys{/deftriangle/.cd,equilateral}
-\pgfqkeys{/deftriangle}{#1}
-\ifcase\tkz@numtr%
- \tkzDefEquilateral(#2,#3)
- \or% 1
- \tkzDefTwoOne(#2,#3)
- \or% 2
- \tkzDefPythagore(#2,#3)
- \or% 3
- \tkzDefSchoolTriangle(#2,#3)
- \or% 4
- \tkzDefGoldenTriangle(#2,#3)
- \or% 5
- \tkzDefEuclideTriangle(#2,#3)
- \or% 6
- \tkzDefGoldTriangle(#2,#3)
- \or% 7
- \tkzDefCheopsTriangle(#2,#3)
- \or% 8
- \tkzDefTwoAnglesTriangle(#2,#3) \fi
-\endgroup
-}
-
-\def\tkz@numdtr{0}
-\pgfkeys{/drawtriangle/.cd,
-equilateral/.code = {\global\def\tkz@numdtr{0}},
-half/.code = {\global\def\tkz@numdtr{1}},
-pythagore/.code = {\global\def\tkz@numdtr{2}},
-school/.code = {\global\def\tkz@numdtr{3}},
-golden/.code = {\global\def\tkz@numdtr{4}},
-euclide/.code = {\global\def\tkz@numdtr{5}},
-gold/.code = {\global\def\tkz@numdtr{6}},
-cheops/.code = {\global\def\tkz@numdtr{7}},
-two angles/.code args={#1 and #2} { \global\def\tkz@numdtr{8}%
- \global\def\tkz@alpha{#1}%
- \global\def\tkz@beta{#2}},
-/drawtriangle/.unknown/.code ={\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1,
- /tikz/\searchname/.retry=#1}}
-}
-
-\def\tkzDrawTriangle{\pgfutil@ifnextchar[{\tkz@DrawTriangle}{%
- \tkz@DrawTriangle[]}}
-\def\tkz@DrawTriangle[#1](#2,#3){%
-\begingroup
-\pgfkeys{/drawtriangle/.cd,equilateral}
-\pgfqkeys{/drawtriangle}{#1}
-\ifcase\tkz@numdtr%
-\tkzDefEquilateral(#2,#3)
-\or% 1
-\tkzDefTwoOne(#2,#3)
-\or% 2
-\tkzDefPythagore(#2,#3)
-\or% 3
-\tkzDefSchoolTriangle(#2,#3)
-\or% 4
-\tkzDefGoldenTriangle(#2,#3)
-\or% 5
-\tkzDefEuclideTriangle(#2,#3)
-\or% 6
-\tkzDefGoldTriangle(#2,#3)
-\or% 7
-\tkzDefCheopsTriangle(#2,#3)
-\or% 8
-\tkzDefTwoAnglesTriangle(#2,#3)
-\fi
- \draw[/drawtriangle/.cd,line style,#1] (#2)--(#3)--(tkzPointResult)--cycle;%
-\endgroup
-}
-
-%<--------------------------------------------------------------------------–>
-% Droites particulières d'un triangle
-%<--------------------------------------------------------------------------–>
-% median
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawMedian{\pgfutil@ifnextchar[{\tkz@Median}{\tkz@Median[]}}
-\def\tkz@Median[#1](#2,#3)(#4){%
-\begingroup
- \tkzDefMidPoint(#3,#2)
- \tkzDrawLine[add= 0 and 0,#1](#4,tkzPointResult)
-\endgroup
-}
-
-%<--------------------------------------------------------------------------–>
-% altitude
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawAltitude{\pgfutil@ifnextchar[{\tkz@Altitude}{\tkz@Altitude[]}}
-\def\tkz@Altitude[#1](#2,#3)(#4){%
-\begingroup
- \tkzUProjection(#2,#3)(#4)
- \tkzDrawLine[add= 0 and 0,#1](#4,tkzPointResult)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% bisector
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawBisector{\pgfutil@ifnextchar[{\tkz@Bisector}{\tkz@Bisector[]}}
-\def\tkz@Bisector[#1](#2,#3,#4){%
-\begingroup
- \tkzDefBisectorLine(#2,#3,#4)
- \tkzInterLL(#2,#4)(#3,tkzPointResult)
- \tkzDrawLine[add= 0 and 0,#1](#3,tkzPointResult)
-\endgroup
-}
-
-
-%<--------------------------- square ---------------------------------–>
-%
-%<--------------------------------------------------------------------------–>
-\def\tkzDefSquare(#1,#2){
-\begingroup
- \tkzURotateAngle(#2,-90)(#1)\tkzGetPoint{tkzFirstPointResult}
- \tkzURotateAngle(#1, 90)(#2)\tkzGetPoint{tkzSecondPointResult}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDrawSquare{\pgfutil@ifnextchar[{\tkz@DrawSquare}{%
- \tkz@DrawSquare[]}}
-
-\def\tkz@DrawSquare[#1](#2,#3){%
-\begingroup
- \tkzDefSquare(#2,#3)
- \tkzDrawPolygon[#1](#2,#3,tkzFirstPointResult,tkzSecondPointResult)
-\endgroup
-}
-%<--------------------------- gold rectangle -------------------------------–>
-%
-%<--------------------------------------------------------------------------–>
-
-\def\tkzDefGoldRectangle(#1,#2){
-\begingroup
- \tkzVecKOrth[-\tkzInvPhi](#2,#1){tkzFirstPointResult}
- \tkzVecKOrth[\tkzInvPhi](#1,#2){tkzSecondPointResult}
-\endgroup
-}
-\def\tkzDrawGoldRectangle{\pgfutil@ifnextchar[{\tkz@DrawGoldRectangle}{%
- \tkz@DrawGoldRectangle[]}}
-
-\def\tkz@DrawGoldRectangle[#1](#2,#3){
-\begingroup
- \tkzDefGoldRectangle(#2,#3)
- \tkzDrawPolygon[#1](#2,#3,tkzFirstPointResult,tkzSecondPointResult)
-\endgroup
-}
-
-\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-vectors.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-vectors.tex
deleted file mode 100644
index 15637a8e975..00000000000
--- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-obj-vectors.tex
+++ /dev/null
@@ -1,119 +0,0 @@
-% Copyright 2011 by Alain Matthes
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-
-
-\def\fileversion{1.16 c}
-\def\filedate{2011/06/01}
-
- %<--------------------------------------------------------------------------–>
-% Vectors
-%<--------------------------------------------------------------------------–>
-
-%<-------------------------------------------------------------------------–>
-%<-------------------------------------------------------------------------–>
-\def\tkzAddVectors(#1,#2)(#3,#4)#5{%
- \begingroup
- \pgfpointdiff{\pgfpointanchor{#3}{center}}%
- {\pgfpointanchor{#4}{center}}%
- \pgf@xb=\pgf@x%
- \pgf@yb=\pgf@y%
- \path[coordinate] (#2)--+(\pgf@xb,\pgf@yb) coordinate (#5);
- \endgroup
- }
-%<--------------------------------------------------------------------------–>
-% Draw vector
-%<--------------------------------------------------------------------------–>
-\tikzset{vector style/.style={>=latex,->}}
-\pgfkeys{
-/tkzvec/.cd,
-mark options/.code =\tikzset{mkstyle/.style={#1}}%
- \global\edef\tkz@mk@arg{#1},
-label options/.code =\tikzset{lbstyle/.style={#1}}%
- \global\edef\tkz@lb@arg{#1},
- /tkzvec/.unknown/.code ={\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1,
- /tikz/\searchname/.retry=#1}}
-}
-\def\tkzDrawVector{\pgfutil@ifnextchar[{\tkz@DrawVector}{%
- \tkz@DrawVector[]}}
- \def\tkz@DrawVector[#1](#2,#3){%
-\begingroup
-\pgfkeys{/tkzvec/.cd,mark options={},label options={}}
-\pgfqkeys{/tkzvec}{#1}
-% \ifx\tkzutil@empty\tkz@line@symbol
- \draw[vector style,#1] (#2) to (#3);
-% \else
-% \draw[vector style,line style,add=0 and 0,#1](#2) to node[sloped]
-% {\textcolor{\tkz@line@colorsymbol}{\tkz@line@symbol}}(#3);
-% \fi
-% \ifx\tkzutil@empty\tkz@line@label
-% \else
-% \path (#2) to node[above=\tkz@line@poslabel]%
-% {\textcolor{\tkz@line@colorlabel}{\tkz@line@label}}(#3);
-% \fi\fi
- \endgroup
-}
-%<-------------------------------------------------------------------------–>
-%<-------------------------------------------------------------------------–>
-
-\def\tkzLabelVector{\pgfutil@ifnextchar[{\tkz@LabelVector}{%
- \tkz@LabelVector[]}}
-\def\tkz@LabelVector[#1](#2,#3)#4{%
-\begingroup
-\path (#2) to node[above,#1]{#4} (#3) ;
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-% multiple
-\def\tkz@multiLV#1 #2\@nil{%
- \protected@edef\tkz@temp{
- \noexpand \tkzLabelVector[\tkz@optlv](#1){\tkz@labelvec}}\tkz@temp%
- \def\tkz@nextArg{#2}%
- \ifx\tkzutil@empty\tkz@nextArg
- \let\next\@gobble
- \fi
- \next#2\@nil
-}
-%<--------------------------------------------------------------------------–>
-% correction 09/12/2010
-\def\tkzLabelVectors{\pgfutil@ifnextchar[{\tkz@LabelVectors}{%
- \tkz@LabelVectors[]}}
-\def\tkz@LabelVectors[#1](#2)#3{%
-\global\edef\tkz@optlv{#1}
-\global\def\tkz@labelvec{#3}
- \begingroup
- \let\next\tkz@multiLV
- \next#2 \@nil %
-\endgroup
-}
-%<-------------------------------------------------------------------------–>
-%<-------------------------------------------------------------------------–>
-
- \def\tkz@multiVec#1 #2\@nil{%
- \protected@edef\tkz@temp{
- \noexpand \tkzDrawVector[\tkz@optvec](#1)}\tkz@temp%
- \def\tkz@nextArg{#2}%
- \ifx\tkzutil@empty\tkz@nextArg
- \let\next\@gobble
- \fi
- \next#2\@nil
- }
-
-\def\tkzDrawVectors{\pgfutil@ifnextchar[{\tkz@DrawVectors}{%
- \tkz@DrawVectors[]}}
-\def\tkz@DrawVectors[#1](#2){%
-\global\edef\tkz@optvec{#1}
- \begingroup
- \let\next\tkz@multiVec
- \next#2 \@nil %
- \endgroup
- }
-
-
-%<-------------------------------------------------------------------------–>
-\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-angles.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-angles.tex
new file mode 100644
index 00000000000..7385417e27a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-angles.tex
@@ -0,0 +1,65 @@
+% tkz-tools-angles.tex
+% Copyright 2011 by Alain Matthes
+% This file may be distributed and/or modified
+% 1. under the LaTeX Project Public License and/or
+% 2. under the GNU Public License.
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+\typeout{2020/01/23 3.01c tkz-tools-angles.tex}
+\makeatletter
+%<--------------------------------------------------------------------------–>
+%<--------------------------------------------------------------------------–>
+% thanks karu : http://tex.stackexchange.com/questions/151667/tkzgetangle-strange-behavior/196224#196224 \tkzGetAngle strange behavior
+% defines \tkz@FirstAngle and \tkz@SecondAngle sens trigo
+%<--------------------------------------------------------------------------–>
+ \def\tkzNormalizeAngle(#1,#2){%
+ \begingroup
+ \pgfmathparse{#1}\xdef\tkz@FirstAngle{\pgfmathresult}%
+ \pgfmathparse{#2}\xdef\tkz@SecondAngle{\pgfmathresult}%
+ \pgfmathgreaterthan{\tkz@FirstAngle}{0}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \pgfmathsubtract{\tkz@FirstAngle}{360}
+ \xdef\tkz@FirstAngle{\pgfmathresult}%
+ \fi
+ \else
+ \pgfmathgreaterthan{\tkz@FirstAngle}{\tkz@SecondAngle}
+ \ifdim\pgfmathresult pt=1 pt\relax%
+ \pgfmathadd{\tkz@SecondAngle}{360}
+ \xdef\tkz@SecondAngle{\pgfmathresult}%
+ \fi
+ \fi
+ \endgroup
+ }
+%<--------------------------------------------------------------------------–>
+% Angle
+% Recherche l'angle formé par #1 et #2 par rapport à l'horizontale
+%<--------------------------------------------------------------------------–>
+\def\tkzFindSlopeAngle(#1,#2){%
+\begingroup
+ \pgfmathanglebetweenpoints{\pgfpointanchor{#1}{center}}{%
+ \pgfpointanchor{#2}{center}}
+ \global\let\tkzAngleResult\pgfmathresult
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Angle avec trois nodes
+%<--------------------------------------------------------------------------–>
+\def\tkzFindAngle(#1,#2,#3){% new code 2016
+\begingroup
+ \tkzFindSlopeAngle(#2,#1)\tkzGetAngle{tkz@FirstAngle}
+ \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz@SecondAngle}
+ \tkzNormalizeAngle(\tkz@FirstAngle,\tkz@SecondAngle)
+ \edef\tkz@Angle{\fpeval{\tkz@SecondAngle-\tkz@FirstAngle}}
+ \global\let\tkzAngleResult\tkz@Angle
+\endgroup
+}
+%<--------------------------------------------------------------------------–>
+% Find angle
+%<--------------------------------------------------------------------------–>
+\def\tkzGetAngle#1{%
+ \global\expandafter\edef\csname #1\endcsname{\tkzAngleResult}
+}
+\makeatother
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-intersections.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-intersections.tex
index 94c65930a41..8937f914fa7 100644
--- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-intersections.tex
+++ b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-intersections.tex
@@ -1,62 +1,79 @@
+% tkz-tools-intersections.tex
% Copyright 2011 by Alain Matthes
-%
% This file may be distributed and/or modified
-%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Public License.
-
-
-\def\fileversion{1.16 c}
-\def\filedate{2011/06/01}
-
+\def\fileversion{3.01c}
+\def\filedate{2020/01/23}
+\typeout{2020/01/23 3.01c tkz-tools-intersections.tex}
+\makeatletter
%<--------------------------------------------------------------------------–>
% intersection de deux lignes
%<--------------------------------------------------------------------------–>
-\def\tkzInterLL(#1,#2)(#3,#4){% méthode avec FP
+\def\tkzInterLL(#1,#2)(#3,#4){% méthode avec xfp
\tkz@InterLL(#1,#2)(#3,#4){tkzPointResult}
}
-% méthode with tikz
+
\def\tkz@InterLL(#1,#2)(#3,#4)#5{%
-%\path (intersection of #1--#2 and #3--#4) coordinate(#5);%
-\pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}}
-\pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}}
-\tkz@ax\pgf@x %
-\tkz@ay\pgf@y %
-\pgfextractx{\pgf@x}{\pgfpointanchor{#2}{center}}
+%\path (intersection of #1--#2 and #3--#4) coordinate(#5);
+% méthode with tikz
+\pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}}%
+\pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}}%
+\tkz@ax\pgf@x%
+\tkz@ay\pgf@y%
+\pgfextractx{\pgf@x}{\pgfpointanchor{#2}{center}}%
\pgfextracty{\pgf@y}{\pgfpointanchor{#2}{center}}
-\tkz@bx\pgf@x %
-\tkz@by\pgf@y %
-\pgfextractx{\pgf@x}{\pgfpointanchor{#3}{center}}
-\pgfextracty{\pgf@y}{\pgfpointanchor{#3}{center}}
-\tkz@cx\pgf@x %
-\tkz@cy\pgf@y %
-\pgfextractx{\pgf@x}{\pgfpointanchor{#4}{center}}
-\pgfextracty{\pgf@y}{\pgfpointanchor{#4}{center}}
-\tkz@dx\pgf@x %
-\tkz@dy\pgf@y %
-\FPeval\tkz@deltax{\pgf@sys@tonumber{\tkz@ax}-\pgf@sys@tonumber{\tkz@bx}}
-\FPdiv\tkz@deltax{\tkz@deltax}{28.45274}
-\FPeval\tkz@deltaxx{\pgf@sys@tonumber{\tkz@cx}-\pgf@sys@tonumber{\tkz@dx}}
-\FPdiv\tkz@deltaxx{\tkz@deltaxx}{28.45274}
-\FPeval\tkz@deltay{\pgf@sys@tonumber{\tkz@ay}-\pgf@sys@tonumber{\tkz@by}}
-\FPdiv\tkz@deltay{\tkz@deltay}{28.45274}
-\FPeval\tkz@deltayy{\pgf@sys@tonumber{\tkz@cy}-\pgf@sys@tonumber{\tkz@dy}}
-\FPdiv\tkz@deltayy{\tkz@deltayy}{28.45274}
-\FPeval\tkz@deltaxy{(\pgf@sys@tonumber{\tkz@ax}*\pgf@sys@tonumber{\tkz@by})-(\pgf@sys@tonumber{\tkz@ay}*\pgf@sys@tonumber{\tkz@bx})}
-\FPdiv\tkz@deltaxy{\tkz@deltaxy}{28.45274}
-\FPdiv\tkz@deltaxy{\tkz@deltaxy}{28.45274}
-\FPeval\tkz@deltaxxyy{(\pgf@sys@tonumber{\tkz@cx}*\pgf@sys@tonumber{\tkz@dy})-(\pgf@sys@tonumber{\tkz@cy}*\pgf@sys@tonumber{\tkz@dx})}
-\FPdiv\tkz@deltaxxyy{\tkz@deltaxxyy}{28.45274}
-\FPdiv\tkz@deltaxxyy{\tkz@deltaxxyy}{28.45274}
-\FPeval\tkz@div{(\tkz@deltax*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxx)}
-\FPeval\tkz@numx{(\tkz@deltaxy*\tkz@deltaxx)-(\tkz@deltax*\tkz@deltaxxyy)}
-\FPeval\tkz@numy{(\tkz@deltaxy*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxxyy)}
-\FPdiv\tkz@xs{\tkz@numx}{\tkz@div}
-\FPdiv\tkz@ys{\tkz@numy}{\tkz@div}
-\FPround\tkz@xs{\tkz@xs}{5}
-\FPround\tkz@ys{\tkz@ys}{5}
+\tkz@bx\pgf@x%
+\tkz@by\pgf@y%
+\pgfextractx{\pgf@x}{\pgfpointanchor{#3}{center}}%
+\pgfextracty{\pgf@y}{\pgfpointanchor{#3}{center}}%
+\tkz@cx\pgf@x%
+\tkz@cy\pgf@y%
+\pgfextractx{\pgf@x}{\pgfpointanchor{#4}{center}}%
+\pgfextracty{\pgf@y}{\pgfpointanchor{#4}{center}}%
+\tkz@dx\pgf@x%
+\tkz@dy\pgf@y%
+
+\edef\tkz@deltax{\fpeval{(\tkz@ax-\tkz@bx)/(28.45274)}}
+\edef\tkz@deltaxx{\fpeval{(\tkz@cx-\tkz@dx)/(28.45274)}}
+\edef\tkz@deltay{\fpeval{(\tkz@ay-\tkz@by)/(28.45274)}}
+\edef\tkz@deltayy{\fpeval{(\tkz@cy-\tkz@dy)/(28.45274)}}
+\edef\tkz@deltaxy{\fpeval{((\tkz@ax*\tkz@by)-(\tkz@ay*\tkz@bx))/(28.45274*28.45274)}}
+\edef\tkz@deltaxxyy{\fpeval{((\tkz@cx*\tkz@dy)-(\tkz@cy*\tkz@dx))/(28.45274*28.45274)}}
+\edef\tkz@div{\fpeval{(\tkz@deltax*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxx)}}
+\edef\tkz@numx{\fpeval{(\tkz@deltaxy*\tkz@deltaxx)-(\tkz@deltax*\tkz@deltaxxyy)}}
+\edef\tkz@numy{\fpeval{(\tkz@deltaxy*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxxyy)}}
+\edef\tkz@xs{\fpeval{round(\tkz@numx/\tkz@div,5)}}
+\edef\tkz@ys{\fpeval{round(\tkz@numy/\tkz@div,5)}}
\path[coordinate](\tkz@xs,\tkz@ys) coordinate (#5);
}
+
+
+% méthode with coordinates
+\def\tkzInterLLxy(#1,#2,#3,#4)(#5,#6,#7,#8){%
+%\path (intersection of #1--#2 and #3--#4) coordinate(#5);%
+\tkz@ax#1%
+\tkz@ay#2%
+\tkz@bx#3%
+\tkz@by#4%
+\tkz@cx#5%
+\tkz@cy#6%
+\tkz@dx#7%
+\tkz@dy#8%
+\edef\tkz@deltax{\fpeval{(\tkz@ax-\tkz@bx)/(28.45274)}}
+\edef\tkz@deltaxx{\fpeval{(\tkz@cx-\tkz@dx)/(28.45274)}}
+\edef\tkz@deltay{\fpeval{(\tkz@ay-\tkz@by)/(28.45274)}}
+\edef\tkz@deltayy{\fpeval{(\tkz@cy-\tkz@dy)/(28.45274)}}
+\edef\tkz@deltaxy{\fpeval{((\tkz@ax*\tkz@by)-(\tkz@ay*\tkz@bx))/(28.45274*28.45274)}}
+\edef\tkz@deltaxxyy{\fpeval{((\tkz@cx*\tkz@dy)-(\tkz@cy*\tkz@dx))/(28.45274*28.45274)}}
+\edef\tkz@div{\fpeval{(\tkz@deltax*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxx)}}
+\edef\tkz@numx{\fpeval{(\tkz@deltaxy*\tkz@deltaxx)-(\tkz@deltax*\tkz@deltaxxyy)}}
+\edef\tkz@numy{\fpeval{(\tkz@deltaxy*\tkz@deltayy)-(\tkz@deltay*\tkz@deltaxxyy)}}
+\edef\tkz@xs{\fpeval{round(\tkz@numx/\tkz@div,5)}}
+\edef\tkz@ys{\fpeval{round(\tkz@numy/\tkz@div,5)}}
+\path[coordinate](\tkz@xs,\tkz@ys) coordinate (tkzPointResult);
+}
+
%<--------------------------------------------------------------------------–>
% intersection de Ligne Cercle rayon connu
%<--------------------------------------------------------------------------–>
@@ -96,88 +113,99 @@
%
% return(TRUE);
% }
-%<--------------------------------------------------------------------------–>
+%<---------- test ------------------------------------------------------–>
+\def\tkzTestInterLC(#1,#2)(#3,#4){%
+\tkz@Projection(#1,#2)(#3){tkz@pth}% distance centre à la ligne
+\tkz@@CalcLength(#3,tkz@pth){tkz@mathLen}%
+\tkzCalcLength(#3,#4)
+\ifdim\tkz@mathLen pt>\tkzLengthResult pt\relax%
+\def\tkzflagLC{-1}
+\else
+\def\tkzflagLC{1}
+\fi
+}
%<--------------------------------------------------------------------------–>
\def\tkz@numlc{0}
-\pgfkeys{
-/linecircle/.cd,
- node/.code = \def\tkz@numlc{0},
- R/.code = \def\tkz@numlc{1},
- with nodes/.code = \def\tkz@numlc{2}
+\pgfkeys{/linecircle/.cd,
+ node/.code = \def\tkz@numlc{0},
+ R/.code = \def\tkz@numlc{1},
+ with nodes/.code = \def\tkz@numlc{2},
+ node
}
%<--------------------------------------------------------------------------–>
-\def\tkzInterLC{\pgfutil@ifnextchar[{\tkz@InterLC}{%
- \tkz@InterLC[]}}
+\def\tkzInterLC{\pgfutil@ifnextchar[{\tkz@InterLC}{\tkz@InterLC[]}}
\def\tkz@InterLC[#1](#2,#3)(#4,#5){%
\begingroup
-\pgfkeys{/linecircle/.cd,node}
\pgfqkeys{/linecircle}{#1}
+ \pgfinterruptboundingbox
\ifcase\tkz@numlc%
- % first case 0
-\tkzCalcLength(#4,#5)
-\tkzInterLCR(#2,#3)(#4,\tkzLengthResult pt){%
- tkzFirstPointResult}{tkzSecondPointResult}
- \or% 1
-\tkzInterLCR(#2,#3)(#4,#5){tkzFirstPointResult}{tkzSecondPointResult}%
- \or% 2
-\tkzInterLCWithNodes(#2,#3)(#4,#5){tkzFirstPointResult}{tkzSecondPointResult}%
-\fi
+ % first case 0
+ \tkzCalcLength(#4,#5)
+ \tkzInterLCR(#2,#3)(#4,\tkzLengthResult pt){tkzFirstPointResult}%
+ {tkzSecondPointResult}
+\or% 1
+ \tkzInterLCR(#2,#3)(#4,#5){tkzFirstPointResult}
+ {tkzSecondPointResult}%
+\or% 2
+ \tkzInterLCWithNodes(#2,#3)(#4,#5){tkzFirstPointResult}%
+ {tkzSecondPointResult}%
+\fi
+\endpgfinterruptboundingbox
\endgroup
}
%<--------------------------------------------------------------------------–>
%<--------------------------------------------------------------------------–>
\def\tkzInterLCR(#1,#2)(#3,#4)#5#6{%
\begingroup
- \tkz@radi=#4%
- \tkz@@extractxy{#3}
- \tkz@bx =\pgf@x\relax%
- \tkz@by =\pgf@y\relax%
- \tkz@Projection(#1,#2)(#3){tkz@pth}
- \tkz@@CalcLength(#3,tkz@pth){tkz@mathLen}
- \ifdim\tkz@mathLen pt<0.05pt\relax%
- \pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#2}{center}}%
- \tkz@ax=\pgf@x%
- \tkz@ay=\pgf@y%
- \tkzpointborderellipse{\pgfpoint{\tkz@ax}{\tkz@ay}}%
- {\pgfpoint{\tkz@radi}{\tkz@radi}}
- \tkz@ax=\pgf@x\relax%
- \tkz@ay=\pgf@y\relax%
- \advance\tkz@bx by\tkz@ax\relax%
- \advance\tkz@by by\tkz@ay\relax%
- \path[coordinate] (\tkz@bx,\tkz@by) coordinate (#6);
- \tkzCSym(#3)(#6){#5}
- \else
- \FPdiv\pgfmathresult{\tkz@mathLen}{\pgfmath@tonumber{\tkz@radi}}
- %\pgfmathparse{\tkz@mathLen / \tkz@radi}
- \pgfmathacos@{\pgfmathresult}%
- \let\tkz@angle\pgfmathresult%
- \pgfpointdiff{\pgfpointanchor{#3}{center}}%
- {\pgfpointanchor{tkz@pth}{center}}%
- \tkz@ax=\pgf@x%
- \tkz@ay=\pgf@y%
- \tkzpointborderellipse{\pgfpoint{\tkz@ax}{\tkz@ay}}%
- {\pgfpoint{\tkz@radi}{\tkz@radi}}
- \tkz@ax =\pgf@x\relax%
- \tkz@ay =\pgf@y\relax%
- \advance\tkz@bx by\tkz@ax\relax%
- \advance\tkz@by by\tkz@ay\relax%
- \tkz@@extractxy{#3}
- \tkz@ax =\pgf@x\relax%
- \tkz@ay =\pgf@y\relax%
- \tkz@@extractxy{tkz@pth}
- %\ifdim\pgf@y<\tkz@ay \edef\tkz@angle{-\tkz@angle}%
- % \fi
- \tkzmathrotatepointaround{\pgfpoint{\tkz@bx}{\tkz@by}}%
- {\pgfpoint{\tkz@ax}{\tkz@ay}}%
- {\tkz@angle}
- \path[coordinate] (\pgf@x,\pgf@y) coordinate (#5);
- \tkzmathrotatepointaround{\pgfpoint{\tkz@bx}{\tkz@by}}%
- {\pgfpoint{\tkz@ax}{\tkz@ay}}%
- {-\tkz@angle}
- \path[coordinate] (\pgf@x,\pgf@y) coordinate (#6);
- \fi
- \endgroup
+\tkz@radi=#4%
+\tkz@@extractxy{#3}
+\tkz@bx =\pgf@x\relax%
+\tkz@by =\pgf@y\relax%
+\tkz@Projection(#1,#2)(#3){tkz@pth}
+\tkz@@CalcLength(#3,tkz@pth){tkz@mathLen}
+ \ifdim\tkz@mathLen pt<0.05pt\relax%
+ \pgfpointdiff{\pgfpointanchor{#1}{center}}%
+ {\pgfpointanchor{#2}{center}}%
+ \tkz@ax=\pgf@x%
+ \tkz@ay=\pgf@y%
+ \pgfpointborderellipse{\pgfpoint{\tkz@ax}{\tkz@ay}}%
+ {\pgfpoint{\tkz@radi}{\tkz@radi}}
+ \tkz@ax=\pgf@x\relax%
+ \tkz@ay=\pgf@y\relax%
+ \advance\tkz@bx by\tkz@ax\relax%
+ \advance\tkz@by by\tkz@ay\relax%
+ \pgfcoordinate{#6}{\pgfqpoint{\tkz@bx}{\tkz@by}}
+ \tkzCSym(#3)(#6){#5}
+ \else
+ \edef\pgfmathresult{\fpeval{\tkz@mathLen/\tkz@radi}}
+ % \edef\tkz@angle{\fpeval{acosd(\pgfmathresult)}}
+ \pgfmathacos@{\pgfmathresult}%
+ \let\tkz@angle\pgfmathresult%
+ \pgfpointdiff{\pgfpointanchor{#3}{center}}%
+ {\pgfpointanchor{tkz@pth}{center}}%
+ \tkz@ax=\pgf@x%
+ \tkz@ay=\pgf@y%
+ \pgfpointborderellipse{\pgfpoint{\tkz@ax}{\tkz@ay}}%
+ {\pgfpoint{\tkz@radi}{\tkz@radi}}
+ \tkz@ax =\pgf@x\relax%
+ \tkz@ay =\pgf@y\relax%
+ \advance\tkz@bx by\tkz@ax\relax%
+ \advance\tkz@by by\tkz@ay\relax%
+ \tkz@@extractxy{#3}
+ \tkz@ax =\pgf@x\relax%
+ \tkz@ay =\pgf@y\relax%
+ \tkz@@extractxy{tkz@pth}
+ \pgfmathrotatepointaround{\pgfpoint{\tkz@bx}{\tkz@by}}%
+ {\pgfpoint{\tkz@ax}{\tkz@ay}}%
+ {\tkz@angle}
+ \pgfcoordinate{#5}{\pgfqpoint{\pgf@x}{\pgf@y}}
+ \pgfmathrotatepointaround{\pgfpoint{\tkz@bx}{\tkz@by}}%
+ {\pgfpoint{\tkz@ax}{\tkz@ay}}%
+ {-\tkz@angle}
+ \pgfcoordinate{#6}{\pgfqpoint{\pgf@x}{\pgf@y}}
+
+\fi
+\endgroup
}
%<--------------------------------------------------------------------------–>
% intersection de Ligne Cercle
@@ -198,6 +226,7 @@
\tkzInterLCR(#1,#2)(#3,\tkz@radius pt){#6}{#7}
\endgroup
}
+
%<--------------------------------------------------------------------------–>
% Intersection de deux cercles
%<--------------------------------------------------------------------------–>
@@ -205,29 +234,27 @@
\pgfkeys{
/circlecircle/.cd,
node/.code = {\global\def\tkz@numcc{0}},
- R/.code = {\global\def\tkz@numcc{1}},
- with nodes/.code = {\global\def\tkz@numcc{2}}
+ R/.code = {\global\def\tkz@numcc{1}}
}
%<--------------------------------------------------------------------------–>
-\def\tkzInterCC{\pgfutil@ifnextchar[{\tkz@InterCC}{%
- \tkz@InterCC[]}}
+\def\tkzInterCC{\pgfutil@ifnextchar[{\tkz@InterCC}{\tkz@InterCC[]}}
\def\tkz@InterCC[#1](#2,#3)(#4,#5){%
\begingroup
\pgfkeys{/circlecircle/.cd,node}
\pgfqkeys{/circlecircle}{#1}
\ifcase\tkz@numcc%
% first case 0
-\tkz@save@length
- \tkzCalcLength(#2,#3)\tkzGetLength{tkz@rayA}
- \tkzCalcLength(#4,#5)\tkzGetLength{tkz@rayB}
-\tkz@restore@length
+ \tkz@save@length
+ \tkzCalcLength(#2,#3) \tkzGetLength{tkz@rayA}
+ \tkzCalcLength(#4,#5) \tkzGetLength{tkz@rayB}
+ \tkz@restore@length
\tkzInterCCR(#2,\tkz@rayA pt)(#4,\tkz@rayB pt){tkzFirstPointResult}{%
tkzSecondPointResult}
\or% 1
- \tkzInterCCR(#2,#3)(#4,#5){tkzFirstPointResult}{tkzSecondPointResult}%
- \or%2
-\tkzInterCCWithNodes(#2,#3)(#4,#5){tkzFirstPointResult}{tkzSecondPointResult}
- \fi
+ \tkzInterCCR(#2,#3)(#4,#5){tkzFirstPointResult}{tkzSecondPointResult}%
+ \or%2
+ \tkzInterCCWithNodes(#2,#3)(#4,#5){tkzFirstPointResult}{tkzSecondPointResult}
+\fi
\endgroup
}
%<--------------------------------------------------------------------------–>
@@ -311,6 +338,7 @@
\def\tkzInterCCR(#1,#2)(#3,#4)#5#6{%
\begingroup
+\pgfinterruptboundingbox
\tkz@save@length
\tkzCalcLength(#1,#3)\tkzGetLength{tkz@dd}
\tkz@restore@length
@@ -324,21 +352,20 @@
\tkz@by\pgf@y %
\tkz@cx#2 %
\tkz@cy#4 %
-\FPeval\tkz@aa{((\pgf@sys@tonumber{\tkz@cx}+\pgf@sys@tonumber{\tkz@cy})/(2*\tkz@dd))*(\pgf@sys@tonumber{\tkz@cx}-\pgf@sys@tonumber{\tkz@cy})+\tkz@dd/2}
-
-\FPeval\tkz@xx{\pgf@sys@tonumber{\tkz@ax}+\tkz@aa/\tkz@dd*(\pgf@sys@tonumber{\tkz@bx} - \pgf@sys@tonumber{\tkz@ax})}
-\FPeval\tkz@yy{\pgf@sys@tonumber{\tkz@ay}+\tkz@aa/\tkz@dd*(\pgf@sys@tonumber{\tkz@by} - \pgf@sys@tonumber{\tkz@ay})}
+\edef\tkz@aa{\fpeval{((\tkz@cx+\tkz@cy)/(2*\tkz@dd))*(\tkz@cx-\tkz@cy)+\tkz@dd/2}}
+\edef\tkz@xx{\fpeval{\tkz@ax+\tkz@aa/\tkz@dd*(\tkz@bx - \tkz@ax)}}
+\edef\tkz@yy{\fpeval{\tkz@ay+\tkz@aa/\tkz@dd*(\tkz@by - \tkz@ay)}}
\path[coordinate](\tkz@xx pt,\tkz@yy pt) coordinate (tkzRadialCenter);
-\FPeval\tkz@hh{(\pgf@sys@tonumber{\tkz@cx}+\tkz@aa)*(\pgf@sys@tonumber{\tkz@cx}-\tkz@aa)}
-\FPpow\tkz@hh{\tkz@hh}{0.5}
-\FPeval\tkz@rx{\tkz@hh / \tkz@dd * (\pgf@sys@tonumber{\tkz@ay} - \pgf@sys@tonumber{\tkz@by}) }
-\FPeval\tkz@ry{\tkz@hh / \tkz@dd * (\pgf@sys@tonumber{\tkz@bx} - \pgf@sys@tonumber{\tkz@ax}) }
-\FPadd\tkz@xs{\tkz@xx}{\tkz@rx }
-\FPadd\tkz@ys{\tkz@yy}{\tkz@ry }
+\edef\tkz@hh{\fpeval{sqrt((\tkz@cx+\tkz@aa)*(\tkz@cx-\tkz@aa))}}
+\edef\tkz@rx{\fpeval{\tkz@hh / \tkz@dd * (\tkz@ay - \tkz@by)}}
+\edef\tkz@ry{\fpeval{\tkz@hh / \tkz@dd * (\tkz@bx - \tkz@ax)}}
+\edef\tkz@xs{\fpeval{\tkz@xx + \tkz@rx}}
+\edef\tkz@ys{\fpeval{\tkz@yy + \tkz@ry}}
\path[coordinate](\tkz@xs pt,\tkz@ys pt) coordinate (#5);
-\FPadd\tkz@xss{\tkz@xx}{-\tkz@rx }
-\FPadd\tkz@yss{\tkz@yy}{-\tkz@ry }
-\path[coordinate](\tkz@xss pt,\tkz@yss pt) coordinate (#6);
+\edef\tkz@xss{\fpeval{\tkz@xx - \tkz@rx}}
+\edef\tkz@yss{\fpeval{\tkz@yy - \tkz@ry}}
+\path[coordinate](\tkz@xss pt,\tkz@yss pt) coordinate (#6);
+\endpgfinterruptboundingbox
\endgroup
}
%<--------------------------------------------------------------------------–>
@@ -361,56 +388,6 @@
\tkzInterCCR(#1,\tkz@rayA pt)(#4,\tkz@rayB pt){#7}{#8}
\endgroup
}
-
-%<--------------------------------------------------------------------------–>
-% tangente à cercle passant par un point donné
-%<--------------------------------------------------------------------------–>
-\def\tkzTgtFromPR(#1,#2)(#3){%
- \begingroup
- \tkzDefMidPoint(#1,#3)
- \tkzCalcLength(tkzPointResult,#1)
- \tkzInterCCR(#1,#2)(tkzPointResult,\tkzLengthResult pt){%
- tkzFirstPointResult}{%
- tkzSecondPointResult}%
- \endgroup
-}
-
-\def\tkzTgtFromP(#1,#2)(#3){%
- \begingroup
- \tkzDefMidPoint(#1,#3)
- \tkzCalcLength(#1,#2)\tkzGetLength{tkz@radone}%
- \tkzCalcLength(tkzPointResult,#1)\tkzGetLength{tkz@radtwo}%
- \tkzInterCCR(#1,\tkz@radone pt)(tkzPointResult,\tkz@radtwo pt){%
- tkzFirstPointResult}{%
- tkzSecondPointResult}%
- \endgroup
-}
-\def\tkzTgtAt(#1)(#2){%
-\begingroup
- \tkz@VecKOrthNorm[-1](#2,#1){tkzPointResult}
- \endgroup
-} %<--------------------------------------------------------------------------–> %<--------------------------------------------------------------------------–>
-\def\tkz@numtang{0}
-\pgfkeys{
-/tang/.cd,
-at/.code = {\global\def\tkz@numtang{0}\global\def\tkz@ptat{#1}},
-from/.code = {\global\def\tkz@numtang{1}\global\def\tkz@ptfrom{#1}},
-from with R/.code = {\global\def\tkz@numtang{2}\global\def\tkz@ptfrom{#1}}}
-%<--------------------------------------------------------------------------–>
-\def\tkzTangent{\pgfutil@ifnextchar[{\tkz@Tangent}{\tkz@Tangent[]}}
-
-\def\tkz@Tangent[#1](#2){%
-\begingroup
-\pgfkeys{tang/.cd}
-\pgfqkeys{/tang}{#1}
-\ifcase\tkz@numtang
- \tkzTgtAt(#2)(\tkz@ptat)
-\or
- \tkzTgtFromP(#2)(\tkz@ptfrom)
- \or
- \tkzTgtFromPR(#2)(\tkz@ptfrom)
-\fi
-\endgroup
-}
-
+
+\makeatother
\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-transformations.tex b/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-transformations.tex
deleted file mode 100644
index fd7b14f112c..00000000000
--- a/Master/texmf-dist/tex/latex/tkz-euclide/tkz-tools-transformations.tex
+++ /dev/null
@@ -1,525 +0,0 @@
-% Copyright 2011 by Alain Matthes
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-
-
-\def\fileversion{1.16 c}
-\def\filedate{2011/06/01}
-
-
-%<--------------------------------------------------------------------------–>
-% Transformations Géométriques
-%<--------------------------------------------------------------------------–>
-\def\tkz@numtrsf{0}
-\pgfkeys{/tkzDefPointBy/.cd,
-translation/.code args={from #1 to #2}{%
- \global\def\tkzfrom{#1}%
- \global\def\tkzto{#2}%
- \global\def\tkz@numtrsf{0}},
- homothety/.code args={center #1 ratio #2}{%
- \global\def\tkzcenter{#1}%
- \global\def\tkzratio{#2}%
- \global\def\tkz@numtrsf{1}},
- reflection/.code args={over #1--#2}{%
- \global\def\tkzdeb{#1}%
- \global\def\tkzfin{#2}%
- \global\def\tkz@numtrsf{2}},
- symmetry/.code args={center #1}{%
- \global\def\tkzcenter{#1}%
- \global\def\tkz@numtrsf{3}},
- projection/.code args={onto #1--#2}{%
- \global\def\tkzdeb{#1}%
- \global\def\tkzfin{#2}%
- \global\def\tkz@numtrsf{4}},
- rotation/.code args={center #1 angle #2}{%
- \global\def\tkzcenter{#1}%
- \global\def\tkzangle{#2}%
- \global\def\tkz@numtrsf{5}},
- rotation in rad/.code args={center #1 angle #2}{%
- \global\def\tkzcenter{#1}%
- \global\def\tkzangle{#2}%
- \global\def\tkz@numtrsf{6}},
-inversion/.code args={center #1 through #2}{%
- \global\def\tkzcenter{#1}%
- \global\def\tkzpoint{#2}%
- \global\def\tkz@numtrsf{7}}
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzDefPointsBy{\pgfutil@ifnextchar[{\tkz@DefPointsBy}{%
- \tkz@DefPointsBy[]}}
-\def\tkz@DefPointsBy[#1](#2)#3{%
-\begingroup
-\pgfqkeys{/tkzDefPointBy}{#1}
-\ifcase\tkz@numtrsf%
- % first case 0
- \tkzTranslation(\tkzfrom,\tkzto)(#2){#3}
- \or% 1
- \tkzHomo(\tkzcenter,\tkzratio)(#2){#3}
- \or% 2
- \tkzSymOrth(\tkzdeb,\tkzfin)(#2){#3}
- \or% 3
- \tkzCSym(\tkzcenter)(#2){#3}
- \or% 4
- \tkzProjection(\tkzdeb,\tkzfin)(#2){#3}
- \or% 5
- \tkzRotateAngle(\tkzcenter,\tkzangle)(#2){#3}
- \or% 6
- \tkzRotateInRad(\tkzcenter,\tkzangle)(#2){#3}
- \or% 7
- \tkzInversePoint(\tkzcenter,\tkzpoint)(#2){#3}
-\fi
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-\def\tkzDefPointBy{\pgfutil@ifnextchar[{\tkz@DefPointBy}{%
- \tkz@DefPointBy[]}}
-\def\tkz@DefPointBy[#1](#2){%
-\begingroup
-\pgfqkeys{/tkzDefPointBy}{#1}
- \ifcase\tkz@numtrsf%
-% % first case 0
- \tkzUTranslation(\tkzfrom,\tkzto)(#2)
- \or% 1
- \tkzUHomo(\tkzcenter,\tkzratio)(#2)
-\or% 2
-\tkzUSymOrth(\tkzdeb,\tkzfin)(#2)
-\or% 3
-\tkzUCSym(\tkzcenter)(#2)
-\or% 4
-\tkzUProjection(\tkzdeb,\tkzfin)(#2)
-\or% 5
-\tkzURotateAngle(\tkzcenter,\tkzangle)(#2)
- \or% 6
-\tkzURotateInRad(\tkzcenter,\tkzangle)(#2)
- \or% 7
-\tkzUInversePoint(\tkzcenter,\tkzpoint)(#2)
-\fi
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-\def\ExtractPoint#1,#2\@nil{%
-\global\edef\tkz@LastList{#2}
-\global\edef\tkz@FirstPoint{#1}
-}
-\def\FirstPointInList#1{%
-\edef\tkz@templist{#1,}
-\expandafter\ExtractPoint\tkz@templist\@nil
-}
-%<--------------------------------------------------------------------------–>
-% Translation par rapport à un point
-%<--------------------------------------------------------------------------–>
-\def\tkzTranslation(#1,#2)(#3)#4{%
-\begingroup
-\global\def\tkz@LastList{#4}
- \foreach\PointTR in {#3}{%
- \FirstPointInList\tkz@LastList
- \ifx\tkz@FirstPoint\tkzutil@empty
- \global\edef\tkz@pointtsf{\PointTR '}
- \else
- \global\edef\tkz@pointtsf{\tkz@FirstPoint}
- \fi
- \tkzVecKCoLinear(#1,#2,\PointTR){\tkz@pointtsf}%
-}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzUTranslation(#1,#2)(#3){%
-\begingroup
- \tkzVecKCoLinear(#1,#2,#3){tkzPointResult}%
-\endgroup
-}
-
-%<--------------------------------------------------------------------------–>
-% Symétrie par rapport à un point Homo with (-1)
-% #2 le centre #3 l'antécédent
-%<--------------------------------------------------------------------------–>
-\def\tkzCSym(#1)(#2)#3{%
-\begingroup
-\global\def\tkz@LastList{#3}
- \foreach\PointCS in {#2}{%
- \FirstPointInList\tkz@LastList
- \ifx\tkz@FirstPoint\tkzutil@empty
- \global\edef\tkz@pointtsf{\PointCS '}
- \else
- \global\edef\tkz@pointtsf{\tkz@FirstPoint}
- \fi
- \pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{\PointCS}{center}}%
- \tkz@ax=\pgf@x%
- \tkz@ay=\pgf@y%
- \path(#1)--++(-\tkz@ax,-\tkz@ay)coordinate (\tkz@pointtsf);
-}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzUCSym(#1)(#2){%
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#2}{center}}%
- \tkz@ax=\pgf@x%
- \tkz@ay=\pgf@y%
- \path(#1)--++(-\tkz@ax,-\tkz@ay)coordinate (tkzPointResult);
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Symétrie orthogonale par rapport à une droite
-%<--------------------------------------------------------------------------–>
-\def\tkzSymOrth(#1,#2)(#3)#4{%
-\begingroup
-\global\def\tkz@LastList{#4}
- \foreach\PointSO in {#3}{%
- \FirstPointInList\tkz@LastList
- \ifx\tkz@FirstPoint\tkzutil@empty
- \global\edef\tkz@pointtsf{\PointSO '}
- \else
- \global\edef\tkz@pointtsf{\tkz@FirstPoint}
- \fi
- \pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#2}{center}}%
- \tkz@ax =\pgf@y%
- \tkz@ay =\pgf@x%
- \path[coordinate]%
- (\PointSO)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point);
- \tkzInterLL(#1,#2)(\PointSO,tkz@point)\tkzGetPoint{tkzPointofSym}
- \tkz@VecK[2](\PointSO,tkzPointofSym){\tkz@pointtsf}
-}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzUSymOrth(#1,#2)(#3){%
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#2}{center}}%
- \tkz@ax =\pgf@y%
- \tkz@ay =\pgf@x%
- \path[coordinate]%
- (#3)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point);
- \tkzInterLL(#1,#2)(#3,tkz@point)\tkzGetPoint{tkzPointofSym}
- \tkz@VecK[2](#3,tkzPointofSym){tkzPointResult}
-\endgroup
-}
-
-%<--------------------------------------------------------------------------–>
-% Projection orthogonale sur une droite
-%<--------------------------------------------------------------------------–>
-\def\tkzProjection(#1,#2)(#3)#4{%
-\begingroup
-\global\def\tkz@LastList{#4}
- \foreach\PointPJ in {#3}{%
- \FirstPointInList\tkz@LastList
- \ifx\tkz@FirstPoint\tkzutil@empty
- \global\edef\tkz@pointtsf{\PointPJ '}
- \else
- \global\edef\tkz@pointtsf{\tkz@FirstPoint}
- \fi
- \tkzUProjection(#1,#2)(\PointPJ)
- \tkzGetPoint{\tkz@pointtsf}
- }
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzUProjection(#1,#2)(#3){%
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#2}{center}}%
- \tkz@ax =\pgf@y%
- \tkz@ay =\pgf@x%
- \path[coordinate](#3)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point);
- \tkzInterLL(#1,#2)(#3,tkz@point)% définit tkzPointResult
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkz@Projection(#1,#2)(#3)#4{%
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#2}{center}}%
- \tkz@ax =\pgf@y%
- \tkz@ay =\pgf@x%
- \path[coordinate](#3)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point);
- \tkz@InterLL(#1,#2)(#3,tkz@point){#4}% définit tkzPointResult
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Homothétie par rapport à un point
-%<--------------------------------------------------------------------------–>
-\def\tkzHomo(#1,#2)(#3)#4{%
-\begingroup
-\global\def\tkz@LastList{#4}
- \foreach\PointHO in {#3}{%
- \FirstPointInList\tkz@LastList
- \ifx\tkz@FirstPoint\tkzutil@empty
- \global\edef\tkz@pointtsf{\PointHO '}
- \else
- \global\edef\tkz@pointtsf{\tkz@FirstPoint}
- \fi
- \pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{\PointHO}{center}}%
- \pgf@xa=\pgf@x%
- \pgf@ya=\pgf@y%
- \pgfmathparse{#2}\edef\tkz@coeff{\pgfmathresult}%
- \path[coordinate](#1)--++(\tkz@coeff\pgf@xa,\tkz@coeff\pgf@ya)%
- coordinate(\tkz@pointtsf);
- }
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzUHomo(#1,#2)(#3){%
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#1}{center}}%
- {\pgfpointanchor{#3}{center}}%
- \pgf@xa=\pgf@x%
- \pgf@ya=\pgf@y%
- \pgfmathparse{#2}\edef\tkz@coeff{\pgfmathresult}%
- \path[coordinate](#1)--++(\tkz@coeff\pgf@xa,\tkz@coeff\pgf@ya)%
- coordinate(tkzPointResult);
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% rotation en degré
-%<--------------------------------------------------------------------------–>
-\def\tkzRotateAngle(#1,#2)(#3)#4{%
-\begingroup
-\global\def\tkz@LastList{#4}
- \foreach\PointRot in {#3}{%
- \FirstPointInList\tkz@LastList
- \ifx\tkz@FirstPoint\tkzutil@empty
- \global\edef\tkz@pointtsf{\PointRot '}
- \else
- \global\edef\tkz@pointtsf{\tkz@FirstPoint}
- \fi
- \tkz@@extractxy{\PointRot}
- \global\tkz@ax\pgf@x%
- \global\tkz@ay\pgf@y%
- \tkz@@extractxy{#1}
- \global\tkz@bx\pgf@x%
- \global\tkz@by\pgf@y%
- \tkzmathrotatepointaround{\pgfpoint{\tkz@ax}{\tkz@ay}}%
- {\pgfpoint{\tkz@bx}{\tkz@by}}%
- {#2}
- \global\tkz@bx\pgf@x%
- \global\tkz@by\pgf@y%
- \path[coordinate](\tkz@bx,\tkz@by)coordinate(\tkz@pointtsf);%
- }
- \endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzURotateAngle(#1,#2)(#3){%
-\begingroup
- \tkz@@extractxy{#3}
- \global\tkz@ax\pgf@x%
- \global\tkz@ay\pgf@y%
- \tkz@@extractxy{#1}
- \global\tkz@bx\pgf@x%
- \global\tkz@by\pgf@y%
- \tkzmathrotatepointaround{\pgfpoint{\tkz@ax}{\tkz@ay}}%
- {\pgfpoint{\tkz@bx}{\tkz@by}}%
- {#2}
- \global\tkz@bx\pgf@x%
- \global\tkz@by\pgf@y%
- \path[coordinate](\tkz@bx,\tkz@by)coordinate(tkzPointResult);%
- \endgroup
-}
-%<--------------------------------------------------------------------------–>
-% % rotation en radian
-% %<--------------------------------------------------------------------------–>
-\def\tkzRotateInRad(#1,#2)(#3)#4{%
-\begingroup
-\global\def\tkz@LastList{#4}
- \foreach\PointRot in {#3}{%
- \FirstPointInList\tkz@LastList
- \ifx\tkz@FirstPoint\tkzutil@empty
- \global\edef\tkz@pointtsf{\PointRot '}
- \else
- \global\edef\tkz@pointtsf{\tkz@FirstPoint}
- \fi
- \pgfmathparse{#2 r}
- \let\tkz@Angle\pgfmathresult
- \tkz@@extractxy{\PointRot}
- \tkz@ax\pgf@x%
- \tkz@ay\pgf@y%
- \tkz@@extractxy{#1}
- \tkz@bx\pgf@x%
- \tkz@by\pgf@y%
- \tkzmathrotatepointaround{\pgfpoint{\tkz@ax}{\tkz@ay}}%
- {\pgfpoint{\tkz@bx}{\tkz@by}}%
- {\tkz@Angle}
- \tkz@bx\pgf@x%
- \tkz@by\pgf@y%
- \path[coordinate](\tkz@bx,\tkz@by)coordinate(\tkz@pointtsf);
-}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-\def\tkzURotateInRad(#1,#2)(#3){%
-\begingroup
- \pgfmathparse{#2 r}
- \let\tkz@Angle\pgfmathresult
- \tkz@@extractxy{#3}
- \tkz@ax\pgf@x%
- \tkz@ay\pgf@y%
- \tkz@@extractxy{#1}
- \tkz@bx\pgf@x%
- \tkz@by\pgf@y%
- \tkzmathrotatepointaround{\pgfpoint{\tkz@ax}{\tkz@ay}}%
- {\pgfpoint{\tkz@bx}{\tkz@by}}%
- {\tkz@Angle}
- \tkz@bx\pgf@x%
- \tkz@by\pgf@y%
- \path[coordinate](\tkz@bx,\tkz@by)coordinate(tkzPointResult);
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Inverse of a point
-%<--------------------------------------------------------------------------–>
-\def\tkzInversePoint(#1,#2)(#3)#4{%
-\begingroup
-\global\def\tkz@LastList{#4}
- \foreach\PointIP in {#3}{%
- \FirstPointInList\tkz@LastList
- \ifx\tkz@FirstPoint\tkzutil@empty
- \global\edef\tkz@pointtsf{\PointIP '}
- \else
- \global\edef\tkz@pointtsf{\tkz@FirstPoint}
- \fi
- \tkzCalcLength[cm](#1,#2)\tkzGetLength{tkz@lna}%
- \tkzCalcLength[cm](#1,\PointIP)\tkzGetLength{tkz@lnb}%
- \FPeval\tkz@lnc{\tkz@lna/\tkz@lnb*\tkz@lna}
- \tkzVecKNorm[\tkz@lnc](#1,\PointIP){tkzPointResult}
- }
-\endgroup
-} \def\tkzUInversePoint(#1,#2)(#3){%
-\begingroup
- \tkzCalcLength[cm](#1,#2)\tkzGetLength{tkz@lna}%
- \tkzCalcLength[cm](#1,#3)\tkzGetLength{tkz@lnb}%
- \FPeval\tkz@lnc{\tkz@lna/\tkz@lnb*\tkz@lna}
- \tkzVecKNorm[\tkz@lnc](#1,#3){tkzPointResult}
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-% Fin des transformations
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-% The SHOW
-%<--------------------------------------------------------------------------–>
-\def\tkz@numst{0}
-\pgfkeys{/showtsf/.cd,
- reflection/.code args={over #1--#2}{%
- \def\tkzdeb{#1}
- \def\tkzfin{#2}
- \def\tkz@numst{0}},
- symmetry/.code args={center #1}{%
- \def\tkzcenter{#1}
- \def\tkz@numst{1}},
- projection/.code args={onto #1--#2}{%
- \def\tkzdeb{#1}
- \def\tkzfin{#2}
- \def\tkz@numst{2}},
-translation/.code args={from #1 to #2}{%
- \def\tkzfrom{#1}%
- \def\tkzto{#2}%
- \def\tkz@numst{3}},
- K/.code = \def\tkz@koeff{#1},
- length/.code = \def\tkz@show@length{#1},
- ratio/.code = \def\tkz@show@ratio{#1},
- gap/.code = \def\tkz@show@gap{#1},
- size/.code = \def\tkz@show@size{#1},
-/showtsf/.unknown/.code = {\let\searchname=\pgfkeyscurrentname
- \pgfkeysalso{\searchname/.try=#1,
- /compass/\searchname/.retry=#1,
- /tikz/\searchname/.retry=#1}}
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-\def\tkzShowTransformation{\pgfutil@ifnextchar[{\tkz@ShowTransformation}{%
- \tkz@ShowTransformation[]}}
-\def\tkz@ShowTransformation[#1](#2){%
-\begingroup
- \pgfqkeys{/showtsf}{K=1,gap=2,size=1,ratio=.5,length=1}
- \pgfqkeys{/showtsf}{#1}
-\ifcase\tkz@numst%
- % first case 0
- \tkzShowSymOrth[#1](\tkzdeb,\tkzfin)(#2)
- \or% 1
- \tkzShowCSym[#1](\tkzcenter)(#2)
- \or% 2
- \tkzShowProjection[#1](\tkzdeb,\tkzfin)(#2)
- \or% 3
- \tkzShowTranslation[#1](\tkzfrom,\tkzto)(#2)
- \fi
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-\def\tkzShowTranslation{\pgfutil@ifnextchar[{\tkz@ShowTranslation}{%
- \tkz@ShowTranslation[]}}
-
-\def\tkz@ShowTranslation[#1](#2,#3)(#4){%
-\begingroup
-\tkz@VecKCoLinear[1](#2,#3,#4){tkz@lltmp}
-\tkzCompass[#1](#4,tkz@lltmp)
-\tkzCompass[#1,length=\tkz@show@ratio*\tkz@show@length](#3,tkz@lltmp)
-\endgroup}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-\def\tkzShowSymOrth{\pgfutil@ifnextchar[{\tkz@ShowSymOrth}{%
- \tkz@ShowSymOrth[]}}
-\def\tkz@ShowSymOrth[#1](#2,#3)(#4){%
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#2}{center}}%
- {\pgfpointanchor{#3}{center}}%
- \tkz@ax =\pgf@y%
- \tkz@ay =\pgf@x%
- \path[coordinate](#4)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point);
- \tkzInterLL(#2,#3)(#4,tkz@point) \tkzGetPoint{tkzPointofSym}
- \tkz@VecK[2](#4,tkzPointofSym){tkz@pointtsf}
- \tkzCompass[#1](#2,#4)
- \tkzCompass[#1,length=\tkz@show@ratio*\tkz@show@length](#3,#4)
- \tkzCompass[#1](#2,tkz@pointtsf)
- \tkzCompass[#1,length=\tkz@show@ratio*\tkz@show@length](#3,tkz@pointtsf)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-\def\tkzShowCSym{\pgfutil@ifnextchar[{\tkz@ShowCSym}{\tkz@ShowCSym[]}}
-
-\def\tkz@ShowCSym[#1](#2)(#3){%
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#2}{center}}%
- {\pgfpointanchor{#3}{center}}%
- \tkz@ax=\pgf@x%
- \tkz@ay=\pgf@y%
-\path[coordinate](#2)--++(-\tkz@ax,-\tkz@ay) coordinate (tkz@pointtsf);
- \tkzCompass[#1](#2,tkz@pointtsf)
- \tkzCompass[#1](#2,#3)
-\endgroup
-}
-%<--------------------------------------------------------------------------–>
-%<--------------------------------------------------------------------------–>
-\def\tkzShowProjection{\pgfutil@ifnextchar[{\tkz@ShowProjection}{%
- \tkz@ShowProjection[]}}
-\def\tkz@ShowProjection[#1](#2,#3)(#4){%
-\begingroup
- \pgfpointdiff{\pgfpointanchor{#2}{center}}%
- {\pgfpointanchor{#3}{center}}%
- \tkz@ax =\pgf@y%
- \tkz@ay =\pgf@x%
- \path[coordinate](#4)--++(-\tkz@ax,\tkz@ay) coordinate (tkz@point);
- \tkzInterLL(#2,#3)(#4,tkz@point)\tkzGetPoint{tkz@pointtsf}
- \tkz@VecKCoLinear[1](#2,#3,tkz@pointtsf){SO@tmp1}
- \tkz@VecKCoLinear[-1](#2,#3,tkz@pointtsf){SO@tmp2}
- \tkz@VecKNorm[\tkz@show@size](tkz@pointtsf,SO@tmp1){SO@1}
- \tkz@VecKNorm[\tkz@show@size](tkz@pointtsf,SO@tmp2){SO@2}
- \tkz@VecKNorm[-\tkz@show@gap](tkz@pointtsf,#4){SO@3}
- \tkzCompass[#1](#4,SO@1)
- \tkzCompass[#1](#4,SO@2)
- \tkzCompass[#1](SO@1,SO@3)
- \tkzCompass[#1,length=\tkz@show@ratio*\tkz@show@length](SO@2,SO@3)
-\endgroup
-}
-
-\endinput \ No newline at end of file