diff options
Diffstat (limited to 'macros/latex/contrib/tkz')
95 files changed, 4362 insertions, 2959 deletions
diff --git a/macros/latex/contrib/tkz/tkz-base/README.md b/macros/latex/contrib/tkz/tkz-base/README.md index 5926278cd1..9c6b4a3d34 100644 --- a/macros/latex/contrib/tkz/tkz-base/README.md +++ b/macros/latex/contrib/tkz/tkz-base/README.md @@ -1,6 +1,6 @@ # tkz-base — for Cartesian coordinate system -Release 4.05b 2022/02/07 +Release 4.2c 2022/07/14 ## Description The package `tkz-base` provides some tools like a Cartesian (rectangular) coordinate system to other packages like `tkz-euclide` or `tkz-fct`. @@ -60,6 +60,7 @@ Other examples, in French, are on my site. The new version of `tkz-base` is *not* fully compatible with the version 3 but the differences are minor ## History +- 4.2c adaptation to the new version of tkz-euclide. - 4.05b Correction of an option (tkzDrawY). Removing axesmin.tex Move from \newif\iftkz@integer to base.sty - 4.01b add error message if tkz-base is loaded after tkz-euclide. diff --git a/macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-BB.tex b/macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-BB.tex index 22d943726e..65e78ea629 100644 --- a/macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-BB.tex +++ b/macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-BB.tex @@ -112,10 +112,12 @@ This macro displays the bounding box. A rectangular frame surrounds the bounding \tkzDefPoint(3,0){A} \begin{scope} \tkzClipBB - \tkzDrawCircle[R](A,5) + \tkzDefCircle[R](A,5) + \tkzDrawCircle(A,tkzPointResult) \tkzShowBB[line width = 4pt,fill=teal!10,opacity=.4] \end{scope} -\tkzDrawCircle[R,red](A,4) +\tkzDefCircle[R](A,4) +\tkzDrawCircle(A,tkzPointResult) \end{tikzpicture} \end{tkzexample} %<---------------------------------------------------------------------------> diff --git a/macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-main.tex b/macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-main.tex index f6f74345e2..8302156108 100644 --- a/macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-main.tex +++ b/macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-main.tex @@ -11,32 +11,32 @@ % version 2005/12/01 or later. % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. - +\PassOptionsToPackage{unicode}{hyperref} \documentclass[DIV = 14, fontsize = 10, index = totoc, twoside, - headings = small, - %cadre + cadre, + headings = small ]{tkz-doc} %\usepackage{etoc} \gdef\tkznameofpack{tkz-base} -\gdef\tkzversionofpack{4.05b} -\gdef\tkzdateofpack{2022/02/07} +\gdef\tkzversionofpack{4.2c} +\gdef\tkzdateofpack{\today} \gdef\tkznameofdoc{doc-tkz-base} -\gdef\tkzversionofdoc{4.05b} -\gdef\tkzdateofdoc{2022/02/07} +\gdef\tkzversionofdoc{4.2c} +\gdef\tkzdateofdoc{\today} \gdef\tkzauthorofpack{Alain Matthes} \gdef\tkzadressofauthor{} \gdef\tkznamecollection{AlterMundus} -\gdef\tkzurlauthor{} +\gdef\tkzurlauthor{http://altermundus.fr} \gdef\tkzengine{lualatex} \gdef\tkzurlauthorcom{http://altermundus.fr} +\nameoffile{\tkznameofpack} % -- Packages --------------------------------------------------- \usepackage{calc} -\usepackage{tkz-base} -\usepackage{tkz-euclide} -\usepackage[colorlinks]{hyperref} +\usepackage{tkz-base,tkz-euclide,pgfornament} +\usepackage[colorlinks,pdfencoding=auto, psdextra]{hyperref} \hypersetup{ linkcolor=Gray, citecolor=Green, @@ -60,80 +60,70 @@ \usepackage{tkzexample} %\usepackage{mathtools} \usepackage{fontspec} -\setmainfont{texgyrepagella}% - [ - Extension = .otf , - UprightFont = *-regular, - ItalicFont = *-italic, - BoldFont = *-bold, - BoldItalicFont = *-bolditalic, - Ligatures=TeX, - Numbers={Lowercase,Monospaced}, - ] -\usepackage{unicode-math} +\setmainfont{texgyrepagella}[ + Extension = .otf, + UprightFont = *-regular , + ItalicFont = *-italic , + BoldFont = *-bold , + BoldItalicFont = *-bolditalic +] +\setsansfont{texgyreheros}[ + Extension = .otf, + UprightFont = *-regular , + ItalicFont = *-italic , + BoldFont = *-bold , + BoldItalicFont = *-bolditalic , +] + +\setmonofont{lmmono10-regular.otf}[ + Numbers={Lining,SlashedZero}, + ItalicFont=lmmonoslant10-regular.otf, + BoldFont=lmmonolt10-bold.otf, + BoldItalicFont=lmmonolt10-boldoblique.otf, +] +\newfontfamily\ttcondensed{lmmonoltcond10-regular.otf} +\linespread{1.05} +\usepackage[math-style=literal,bold-style=literal]{unicode-math} \usepackage{fourier-otf} -\makeatletter -\if@tkzcadre \usepackage{zorna} \fi -\makeatother \usepackage{datetime,multicol,lscape} \usepackage[english]{babel} \usepackage[autolanguage]{numprint} \usepackage[normalem]{ulem} %\usepackage{microtype} \usepackage{array,multirow,multido,booktabs} -\usepackage{shortvrb,fancyvrb} -\renewcommand{\labelitemi}{--} +\usepackage{shortvrb,fancyvrb,bookmark} +\usepackage{makeidx} + \AtBeginDocument{\MakeShortVerb{\|}} % link to shortvrb -\pdfcompresslevel=9 -\setlength\parindent{0pt} -\RequirePackage{makeidx} %\@twocolumnfalse \makeindex +%<--------------------------------------------------------------------------->% settings styles +\tkzSetUpColors[background=white,text=black] +\tkzSetUpCompass[color=orange, line width=.2pt,delta=10] +\tkzSetUpArc[color=gray,line width=.2pt] +\tkzSetUpPoint[size=2,color=teal] +\tkzSetUpLine[line width=.2pt,color=teal] +\tkzSetUpStyle[color=orange,line width=.2pt]{new} +\tikzset{every picture/.style={line width=.2pt}} +\tikzset{label angle style/.append style={color=teal,font=\footnotesize}} +\tikzset{new/.style={color=orange,line width=.2pt}} +\tikzset{label style/.append style={below,color=teal,font=\scriptsize}} + % \def\tkzref{\arabic{section}-\arabic{subsection}-\arabic{subsubsection}} % \renewenvironment{tkzexample}[1][]{% % \tkz@killienc \VerbatimOut{tkzbase-\tkzref.tex}% % }{% % \endVerbatimOut % } -%<---------------------------------------------------------------------------> + + \begin{document} \parindent=0pt -\author{\tkzauthorofpack} -\title{\tkznameofpack} -\date{\today} +\tkzTitleFrame{tkz-base\\Cartesian System} \clearpage -\thispagestyle{empty} -\maketitle -\null -\makeatletter -\if@tkzcadre -\AddToShipoutPicture*{% -\setlength\unitlength{1mm} -\put(70,120){% -\begin{tikzpicture} - \node at (30pt,30pt){\fontsize{60}{60}\selectfont \zorna{c}}; - \node at (270pt,30pt){\fontsize{60}{60}\selectfont \zorna{d}}; - \node at (30pt,210pt){\fontsize{60}{60}\selectfont \zorna{a}}; - \node at (270pt,210pt){\fontsize{60}{60}\selectfont \zorna{b}}; - \draw[line width=2pt,double,color=MidnightBlue, - fill=myblue!10,opacity=.5] (0,0) rectangle (300pt,240pt); - \node[text width=240pt] at (150 pt,120 pt){% - \begin{center} - \color{MidnightBlue} - \fontsize{24}{48} - \selectfont tkz-base - \end{center}}; -\end{tikzpicture}} -} -\else -\fi -\makeatother -\clearpage -\tkzSetUpColors[background=white,text=darkgray] -\let\rmfamily\ttfamily -\nameoffile{\tkznameofpack} + \defoffile{\tkzname{\tkznameofpack} is a package based on \TIKZ\ to make graphics as simple as possible. It is the basis on which a series of packages will be built, having as a common point, the creation of drawings useful in the teaching of mathematics. The main function of \tkzname{\tkznameofpack} is to provide an orthogonal coordinate system, and to let the user choose the graphical units. This package requires version 3 or higher of \TIKZ.{\color{red} You must load \tkzimp{tkz-base} before \tkzimp{tkz-euclide} or \tkzimp{tkz-fct}.} } \presentation diff --git a/macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-point.tex b/macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-point.tex index 0798b4036e..ee25236f64 100644 --- a/macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-point.tex +++ b/macros/latex/contrib/tkz/tkz-base/doc/latex/TKZdoc-base-point.tex @@ -343,8 +343,7 @@ Warning at the final "s", an oversight leads to cascading errors if you attempt \begin{scope}[shift=(A)] \tkzDefPoint(30:5){C} \end{scope} - \tkzCalcLength[cm](A,B)\tkzGetLength{rAB} - \tkzDrawCircle[R](A,\rAB) + \tkzDrawCircle(A,B) \tkzDrawSegment(A,B) \tkzDrawPoints(A,B,C) \tkzLabelPoints(B,C) diff --git a/macros/latex/contrib/tkz/tkz-base/doc/tkz-base.pdf b/macros/latex/contrib/tkz/tkz-base/doc/tkz-base.pdf Binary files differindex 844c662889..79495febbf 100644 --- a/macros/latex/contrib/tkz/tkz-base/doc/tkz-base.pdf +++ b/macros/latex/contrib/tkz/tkz-base/doc/tkz-base.pdf diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-base.cfg b/macros/latex/contrib/tkz/tkz-base/latex/tkz-base.cfg index eebdad9e19..4d05fb564a 100644 --- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-base.cfg +++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-base.cfg @@ -1,5 +1,5 @@ % tkz-base.cfg -% Copyright 2022 Alain Matthes +% Copyright 2022 Alain Matthes % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. @@ -16,10 +16,9 @@ % and save the file in a directory part of your TEXINPUTS environment % variable. -\def\fileversion{4.05b} -\def\filedate{2022/01/28 } -\typeout{2022/01/28 4.05b tkz-base.cfg} -%<------ colors ---------------------------------------–> +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-base.cfg} %<------ colors ---------------------------------------–> \def\tkz@backgroundcolor{white} \def\tkz@textcolor{black} @@ -27,35 +26,75 @@ \def\tkz@fillcolor{\tkz@backgroundcolor} \def\tkz@mainlinecolor{\tkz@textcolor} \def\tkz@otherlinecolor{\tkz@mainlinecolor!50} -%<------------------------- Cartesian system -----------------------------–> -% Default unity cm -% Geometry Euclidean with unity for x and y = 1cm ---> step = 1 -% 0 ≤ x ≤ 10 -% 0 ≤ y ≤ 10 -\def\tkz@init@xorigine{0} -\def\tkz@init@yorigine{0} -\def\tkz@init@xstep{1} -\def\tkz@init@ystep{1} -\def\tkz@init@xmin{0} -\def\tkz@init@ymin{0} -\def\tkz@init@xmax{10} -\def\tkz@init@ymax{10} -\def\tkz@init@xdec{1} -\def\tkz@init@ydec{1} %<-------------------------- points -----------------------------------–> \def\tkz@euc@pointshape{circle} \def\tkz@euc@pointcolor{\tkz@mainlinecolor} \def\tkz@euc@labelcolor{\tkz@mainlinecolor} -\def\tkz@euc@pointsize{3} +\def\tkz@euc@pointsize{2} \def\tkz@euc@pointpos{below right} \def\tkz@euc@segmentcolor{\tkz@mainlinecolor} \def\tkz@euc@circlecolor{\tkz@mainlinecolor} +\tikzset{point style/.style = {draw = \tkz@euc@pointcolor, + inner sep = 0pt, + shape = \tkz@euc@pointshape, + minimum size = \tkz@euc@pointsize, + fill = \tkz@euc@pointcolor + } + } +% label for the point +\tikzset{label style/.style={ below, \tkz@euc@labelcolor, + font = \normalsize} + } +\tikzset{label angle style/.style={ \tkz@euc@labelcolor, + font = \normalsize} + } %<-------------------------- line ---------------------------------------–> \def\tkz@euc@linecolor{\tkz@mainlinecolor} -\def\tkz@euc@linewidth{0.6pt} +\def\tkz@euc@linewidth{0.2pt} \def\tkz@euc@linestyle{solid} \def\tkz@euc@lineleft{.2} \def\tkz@euc@lineright{.2} +\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}, + line cap = round + } +} +%<------------------------- circle -----------------------------------–> +\def\tkz@euc@circlelw{\tkz@euc@linewidth} +\def\tkz@euc@circlecolor{\tkz@otherlinecolor} +\def\tkz@euc@circlestyle{solid} +\tikzset{% +circle style/.style = {% + color = \tkz@euc@circlecolor, + line width = \tkz@euc@circlelw, + style = \tkz@euc@circlestyle} +} +\tikzset{label circle style/.style = {% + color = \tkz@mainlinecolor} +} +%<------------------------- compass -----------------------------------–> +\def\tkz@euc@compasscolor{\tkz@otherlinecolor} +\def\tkz@euc@compasswidth{\tkz@euc@linewidth} +\def\tkz@euc@compassstyle{solid} +\tikzset{% +compass style/.style = {% + color = \tkz@euc@compasscolor, + line width = \tkz@euc@compasswidth, + style = \tkz@euc@compassstyle} +} +%<------------------------- arc -----------------------------------–> +\def\tkz@euc@arclw{\tkz@euc@linewidth} +\def\tkz@euc@arccolor{\tkz@mainlinecolor} +\def\tkz@euc@arcstyle{solid} +\tikzset{% +arc style/.style={% + color = \tkz@euc@arccolor, + line width = \tkz@euc@linewidth} +} %<------ axes cartesian system ---------------------------------------–> \def\tkz@init@color{\tkz@textcolor} \def\tkz@init@lw{0.4 pt} @@ -87,14 +126,7 @@ \def\tkz@init@gradsize{\textstyle} \def\tkzRatioLineGrid{0.75} \def\tkz@gd@sublw{0.4 pt}% size line sub grid -%<------------------------- compass -----------------------------------–> -\def\tkz@euc@compasscolor{\tkz@otherlinecolor} -\def\tkz@euc@compasswidth{0.4pt} -\def\tkz@euc@compassstyle{solid} -%<------------------------- arc -----------------------------------–> -\def\tkz@arc@lw{0.4pt} -\def\tkz@arc@color{\tkz@mainlinecolor} -\def\tkz@arc@style{solid} + %<---------------------------- mark -----------------------------------–> \def\tkz@mk@color{\tkz@mainlinecolor} \def\tkz@mk@mark{*} @@ -115,40 +147,11 @@ } \tikzset{yaxe style/.style = {> = latex, ->} } - -\tikzset{point style/.style = {draw = \tkz@euc@pointcolor, - inner sep = 0pt, - shape = \tkz@euc@pointshape, - minimum size = \tkz@euc@pointsize, - fill = \tkz@euc@pointcolor - } - } -% label for the point -\tikzset{label style/.style={ \tkz@euc@pointpos, - \tkz@euc@labelcolor, - font = \normalsize} - } -\tikzset{label angle style/.style={ \tkz@euc@labelcolor, - font = \normalsize} - } -\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}% - } - } -\tikzset{label seg style/.style = {color = \tkz@mainlinecolor, - auto - } - } \tikzset{rep style/.style = { ->, >=latex} } -\tikzset{compass style/.style = {color = \tkz@euc@compasscolor, - line width = \tkz@euc@compasswidth, - style = \tkz@euc@compassstyle} - } + \tikzset{mark style/.style = {mark = \tkz@mk@mark, mark size = \tkz@mk@size, mark options = {color= \tkz@mk@color, @@ -156,7 +159,22 @@ } } } -\tikzset{arc style/.style={gray,thin}} + +%<------------------------- Cartesian system -----------------------------–> +% Default unity cm +% Geometry Euclidean with unity for x and y = 1cm ---> step = 1 +% 0 ≤ x ≤ 10 +% 0 ≤ y ≤ 10 +\def\tkz@init@xorigine{0} +\def\tkz@init@yorigine{0} +\def\tkz@init@xstep{1} +\def\tkz@init@ystep{1} +\def\tkz@init@xmin{0} +\def\tkz@init@ymin{0} +\def\tkz@init@xmax{10} +\def\tkz@init@ymax{10} +\def\tkz@init@xdec{1} +\def\tkz@init@ydec{1} %<---------------------- show coord -----------------------------------–> \tikzset{arrow coord style/.style = {dashed, \tkz@euc@linecolor, @@ -179,9 +197,80 @@ fill = \tkz@fillcolor, left = 3pt} } -%<--------------------------- vector --------------------------------------–> -\tikzset{vector style/.style={>=latex,->} +% +\tikzset{help lines/.style=teal!30,ultra thin} +%<--------------------------- arrow --------------------------------------–> +% Syntax: +% +% - tkz arrow=<arrow end tip>` +% - tkz arrow=<arrow end tip> at <pos> (<pos> = .5 by default) +% - tkz arrow={<arrow end tip>[<arrow options>] at <pos>} +% +% +% Example usages: +% +% \draw[tkz arrow=Stealth] (A) -- (B); +% \draw[tkz arrow={To[scale=3] at .3}] (A)-- (B); +% \draw[tkz arrow={Latex[scale=5,blue] at .8}] (A)-- (B); + +\tikzset{ +tkz arrow/.default=Latex, + tkz arrow/.code=% + {% + \pgfutil@in@{ at }{#1}% + \ifpgfutil@in@ + \mytikz@parsearrow#1\mytikz@stop + \else + \mytikz@parsearrow#1 at .5\mytikz@stop + \fi + } +} +\def\mytikz@parsearrow#1 at #2\mytikz@stop{% + \pgfutil@in@{[}{#1}% + \ifpgfutil@in@ + \mytikz@parsearrow@opt{#2}#1\mytikz@stop + \else + \mytikz@parsearrow@opt{#2}#1[]\mytikz@stop + \fi } + +% #1 = pos, #2 = arrow end tip, #3 = arrow options +\def\mytikz@parsearrow@opt#1#2[#3]\mytikz@stop{% + \pgfkeysalso{decoration={ + markings, + mark=at position #1 with {\arrow[#3]{#2}} + }, + postaction={decorate} + }% +} +%<-------------------------------------------------------------------------> +\tikzset{ + on each path/.style={ + decorate, + decoration={ + show path construction, + moveto code={}, + lineto code={ + \path [#1] + (\tikzinputsegmentfirst) -- (\tikzinputsegmentlast); + }, + curveto code={ + \path [#1] (\tikzinputsegmentfirst) + .. controls + (\tikzinputsegmentsupporta) and (\tikzinputsegmentsupportb) + .. + (\tikzinputsegmentlast); + }, + closepath code={ + \path [#1] + (\tikzinputsegmentfirst) -- (\tikzinputsegmentlast); + }}}} + %<--------------------------- arrows --------------------------------------–> +\tikzset{tkz arrows/.style=% +{postaction={on each path={tkz arrow={Latex[scale=2,color=black]}}}}} +%<--------------------------- vector --------------------------------------–> +\tikzset{vector style/.style={>=Latex,->}} +%<--------------------------- tkzdotted --------------------------------------–> \tikzset{tkzdotted/.style={% dash pattern=on 0.4\pgflinewidth off #1\pgflinewidth,line cap=round, shorten >=#1\pgflinewidth/2,shorten <=#1\pgflinewidth/2, tkzdotted/.default=8}} @@ -194,6 +283,7 @@ --(current bounding box.north east) -- (current bounding box.south east) -- cycle} }} + \def\tkzPhi{1.618034} \def\tkzInvPhi{0.618034} \def\tkzSqrtPhi{1.27202} @@ -203,4 +293,5 @@ \def\tkzSqrTwobyTwo{0.7071065} \def\tkzPi{3.1415926} \def\tkzEuler{2.71828182} + \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-base.sty b/macros/latex/contrib/tkz/tkz-base/latex/tkz-base.sty index 0d18c9bc83..0cea394871 100644 --- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-base.sty +++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-base.sty @@ -10,10 +10,10 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.05 b} -\typeout{2022/01/28 4.05b tkz-base.sty} +\def\fileversion{4.2c} +\typeout{2022/07/14 4.2c tkz-base.sty} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{tkz-base}[2022/01/28 4.05b tkz-base] +\ProvidesPackage{tkz-base}[2022/07/14 4.2c tkz-base] \@ifpackageloaded{tkz-euclide}{\typeout{tkz-base and tkz-fct must be loaded before tkz-euclide} \PackageError{tkz-base}{tkz-base must be loaded before tkz-euclide}{tkz-base must be loaded before tkz-euclide}% \endinput}{} @@ -22,6 +22,7 @@ angles, arrows, arrows.meta, + backgrounds, calc, decorations, decorations.markings, @@ -30,12 +31,12 @@ decorations.text, decorations.pathmorphing, intersections, + patterns, plotmarks, + positioning, quotes, shapes.misc, - positioning, shadows, - patterns, through }% remove snake library % Pour les les labels sur les axes diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-marks.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-marks.tex index 51f61ecafa..8cb6a366a6 100644 --- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-marks.tex +++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-marks.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.05b} -\def\filedate{2022/01/28 } -\typeout{2022/01/28 4.05b tkz-lib-marks.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-lib-marks.tex} \makeatletter %<--------------------------------------------------------------------------–> % Création des symboles diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-shape.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-shape.tex index 119457a009..8f45042a1b 100644 --- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-shape.tex +++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-lib-shape.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.05b} -\def\filedate{2022/01/28 } -\typeout{2022/01/28 4.05b tkz-lib-shape.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-lib-shape.tex} \makeatletter %<--------------------------------------------------------------------------–> % Création des symboles diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-axes.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-axes.tex index 050d8a766f..1baf269bf9 100644 --- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-axes.tex +++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-axes.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.05b} -\def\filedate{2022/01/28 } -\typeout{2022/01/28 4.05b tkz-obj-axes} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-axes} \makeatletter \def\removedot#1.{#1} @@ -116,11 +116,11 @@ $\numprint{\tkz@result}$ tickwd/.code = \xdef\tkz@sua@tickwd{#1}, ticka/.code = \xdef\tkz@sua@ticka{#1}, tickb/.code = \xdef\tkz@sua@tickb{#1}, - line width = \tkz@init@lw, - color = \tkz@init@color, - tickwd = \tkz@init@tickwd, - ticka = \tkz@init@ticka, - tickb = \tkz@init@tickb + line width = \tkz@init@lw, + color = \tkz@init@color, + tickwd = \tkz@init@tickwd, + ticka = \tkz@init@ticka, + tickb = \tkz@init@tickb } \def\tkzSetUpAxis{\pgfutil@ifnextchar[{\tkz@SetUpAxis}{\tkz@SetUpAxis[]}} diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-grids.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-grids.tex index c4b5f381b4..654a29c49c 100644 --- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-grids.tex +++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-grids.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.05b} -\def\filedate{2022/01/28 } -\typeout{2022/01/28 4.05b tkz-obj-grids.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-grids.tex} \makeatletter %<--------------------------------------------------------------------------–> % Setup Grid diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-marks.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-marks.tex index abe6f77459..6b39328d0d 100644 --- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-marks.tex +++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-marks.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.05b} -\def\filedate{2022/01/28 } -\typeout{2022/01/28 4.05b tkz-obj-marks.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-marks.tex} \makeatletter %<-------------------------------------------------------------------------–> % Setup Marks diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-points.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-points.tex index 7645cf523a..21f2987bb9 100644 --- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-points.tex +++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-points.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.05b} -\def\filedate{2022/01/28 } -\typeout{2022/01/28 4.05b tkz-obj-eu-points.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14 } +\typeout{2022/07/14 4.2c tkz-obj-points.tex} \makeatletter %<---------------------------------------------------------------------------> % init def point @@ -116,56 +116,6 @@ % \tkz@DrawPt{#1} % } %<---------------------------------------------------------------------------> -% tkzSetUpPoint définit la forme d'un point -%<---------------------------------------------------------------------------> -\pgfkeys{/tkzsetuppt/.cd, - size/.store in = \tkz@pt@size, - color/.store in = \tkz@pt@color, - fill/.store in = \tkz@pt@fill, - shape/.store in = \tkz@pt@shape, - size = \tkz@euc@pointsize, - color = \tkz@euc@pointcolor, - fill = \tkz@euc@pointcolor, - shape = \tkz@euc@pointshape, - /tkzsetuppt/.search also = {/tikz}, - } -\def\tkzSetUpPoint{\pgfutil@ifnextchar[{\tkz@SetUpPoint}{% - \tkz@SetUpPoint[]}} -\def\tkz@SetUpPoint[#1]{% -\pgfqkeys{/tkzsetuppt}{#1} -% redefine point style with new values -\tikzset{point style/.style={draw = \tkz@pt@color, - inner sep = 0pt, - shape = \tkz@pt@shape, - minimum size = \tkz@pt@size, - fill = \tkz@pt@fill}} -}% end setup -%<---------------------------------------------------------------------------> -% Draw Point -%<---------------------------------------------------------------------------> -\pgfkeys{/tkzdrawpt/.cd, - size/.code = {\tikzset{point style/.append style={minimum size = #1}}}, - size = \tkz@euc@pointsize, - /tkzdrawpt/.search also = {/tikz}, -} -%<-------------------------------------------------------------------------- -\def\tkzDrawPoint{\pgfutil@ifnextchar[{\tkz@DrawPoint}{\tkz@DrawPoint[]}} -\def\tkz@DrawPoint[#1](#2){% -\begingroup - \pgfqkeys{/tkzdrawpt}{#1} - \node[point style,/tkzdrawpt/.cd,#1] at (#2) {};%2016 -\endgroup -} -%<---------------------------------------------------------------------------> -\def\tkzDrawPoints{\pgfutil@ifnextchar[{\tkz@drawpts}{\tkz@drawpts[]}} -%<---------------------------------------------------------------------------> -\def\tkz@drawpts[#1](#2){% -\begingroup - \pgfqkeys{/tkzdrawpt}{#1} - \foreach \point in {#2}{\node[point style,/tkzdrawpt/.cd,#1] at (\point) {};} %2016 -\endgroup -} -%<---------------------------------------------------------------------------> % %<---------------------------------------------------------------------------> \def\tkzRenamePoint(#1)#2{\coordinate (#2) at (#1);} @@ -191,6 +141,32 @@ \coordinate (#3) at (#2); \end{scope} } +%<---------------------------------------------------------------------------> +% Coordonnées d'un point +% result in #2x et #2y #1 est le point et on récupère ses coordonnées +% usage soit A un point \tkzGetPointCoord(A){V} alors \Vx = xA et \Vy = yA +% en cm +% tkzGetPointCoord avec [#1] cm ou bien pt ?? todo +%<---------------------------------------------------------------------------> +\def\tkzGetPointCoord(#1)#2{% +\begingroup + \pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}} + \pgfmathparse{\pgf@sys@tonumber{\pgf@x}/28.45274} + \global\let\tkzresultx\pgfmathresult + \global\expandafter\edef\csname #2x\endcsname{\tkzresultx}% + \pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}} + \pgfmathparse{\pgf@sys@tonumber{\pgf@y}/28.45274} + \global\let\tkzresulty\pgfmathresult + \global\expandafter\edef\csname #2y\endcsname{\tkzresulty} +\endgroup +} +\def\tkz@@extractxy#1{% +\pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}} +\pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}} +} +\let\tkzGetPointxy\tkzGetPointCoord +%<---------------------------------------------------------------------------> +%%%%%%%%%. Label,draw %<--------------------------------------------------------------------------> % tkzLabelPoint Affichage des LABELS pour un point %<--------------------------------------------------------------------------> @@ -248,10 +224,60 @@ \begingroup \pgfqkeys{/tkzautolab}{#1} \foreach \point in {#2}{ - \path (\tkz@center) -- ($ (\point) + \tkz@dist*($(\point)-(\tkz@center)$) $) node[/tkzautolab/.cd,#1]{$\point$};} + \path (\tkz@center) -- ($ (\point) + \tkz@dist*($(\point)-(\tkz@center)$) $) node[/tkzautolab/.cd,label style,#1]{$\point$};} \endgroup }% %<---------------------------------------------------------------------------> +% tkzSetUpPoint définit la forme d'un point +%<---------------------------------------------------------------------------> +\pgfkeys{/tkzsetuppt/.cd, + size/.store in = \tkz@pt@size, + color/.store in = \tkz@pt@color, + fill/.store in = \tkz@pt@fill, + shape/.store in = \tkz@pt@shape, + size = \tkz@euc@pointsize, + color = \tkz@euc@pointcolor, + fill = \tkz@euc@pointcolor, + shape = \tkz@euc@pointshape, + /tkzsetuppt/.search also = {/tikz}, + } +\def\tkzSetUpPoint{\pgfutil@ifnextchar[{\tkz@SetUpPoint}{% + \tkz@SetUpPoint[]}} +\def\tkz@SetUpPoint[#1]{% +\pgfqkeys{/tkzsetuppt}{#1} +% redefine point style with new values +\tikzset{point style/.style={draw = \tkz@pt@color, + inner sep = 0pt, + shape = \tkz@pt@shape, + minimum size = \tkz@pt@size, + fill = \tkz@pt@fill}} +}% end setup +%<---------------------------------------------------------------------------> +% Draw Point +%<---------------------------------------------------------------------------> +\pgfkeys{/tkzdrawpt/.cd, + size/.code = {\tikzset{point style/.append style={minimum size = #1}}}, + size = \tkz@euc@pointsize, + /tkzdrawpt/.search also = {/tikz}, +} +%<-------------------------------------------------------------------------- +\def\tkzDrawPoint{\pgfutil@ifnextchar[{\tkz@DrawPoint}{\tkz@DrawPoint[]}} +\def\tkz@DrawPoint[#1](#2){% +\begingroup + \pgfqkeys{/tkzdrawpt}{#1} + \node[point style,/tkzdrawpt/.cd,#1] at (#2) {};%2016 +\endgroup +} +%<---------------------------------------------------------------------------> +\def\tkzDrawPoints{\pgfutil@ifnextchar[{\tkz@drawpts}{\tkz@drawpts[]}} +%<---------------------------------------------------------------------------> +\def\tkz@drawpts[#1](#2){% +\begingroup + \pgfqkeys{/tkzdrawpt}{#1} + \foreach \point in {#2}{\node[point style,/tkzdrawpt/.cd,#1] at (\point) {};} %2016 +\endgroup +} +%<---------------------------------------------------------------------------> % PointShowCoord %<---------------------------------------------------------------------------> \pgfkeys{/tkzprcoord/.cd, @@ -295,29 +321,5 @@ \endgroup } \let\tkzShowPointCoord\tkzPointShowCoord -%<---------------------------------------------------------------------------> -% Coordonnées d'un point -% result in #2x et #2y #1 est le point et on récupère ses coordonnées -% usage soit A un point \tkzGetPointCoord(A){V} alors \Vx = xA et \Vy = yA -% en cm -% tkzGetPointCoord avec [#1] cm ou bien pt ?? todo -%<---------------------------------------------------------------------------> -\def\tkzGetPointCoord(#1)#2{% -\begingroup - \pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}} - \pgfmathparse{\pgf@sys@tonumber{\pgf@x}/28.45274} - \global\let\tkzresultx\pgfmathresult - \global\expandafter\edef\csname #2x\endcsname{\tkzresultx}% - \pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}} - \pgfmathparse{\pgf@sys@tonumber{\pgf@y}/28.45274} - \global\let\tkzresulty\pgfmathresult - \global\expandafter\edef\csname #2y\endcsname{\tkzresulty} -\endgroup -} -\def\tkz@@extractxy#1{% -\pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}} -\pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}} -} -\let\tkzGetPointxy\tkzGetPointCoord \makeatother \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-rep.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-rep.tex index fe984ffb62..7ec1e86626 100644 --- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-rep.tex +++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-obj-rep.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.05b} -\def\filedate{2022/01/28} -\typeout{2022/01/28 4.05b tkz-obj-rep.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-rep.tex} \makeatletter %<--------------------------------------------------------------------------–> % repère diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-BB.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-BB.tex index b09c8b5608..8d2f196f30 100644 --- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-BB.tex +++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-BB.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.05b} -\def\filedate{2022/01/28 } -\typeout{2022/01/28 4.05b tkz-obj-BB.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-BB.tex} \makeatletter %<--------------------------------------------------------------------------–> \def\tkzShowBB{\pgfutil@ifnextchar[{\tkz@ShowBB}{\tkz@ShowBB[]}} diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-arith.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-arith.tex index 84d2336613..2a163531a7 100644 --- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-arith.tex +++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-arith.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.05b} -\def\filedate{2022/01/28 } -\typeout{2022/01/28 4.05b tkz-tools-arith.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-arith.tex} % 1.161 test if "isfactor" is already defined % now with pgf 3.0 gcd isprime isodd iseven are defined %<--------------------------------------------------------------------------–> diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-base.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-base.tex index 207df8e92e..85955e1461 100644 --- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-base.tex +++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-base.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.05b} -\def\filedate{2022/01/28 } -\typeout{2022/01/28 4.05b tkz-tools-base.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-base.tex} \makeatletter %<--------------------------------------------------------------------------–> \global\let\tkz@tmp@xa\tkz@init@xmin% modif 2016 diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-colors.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-colors.tex index d24a49add8..9beab795b0 100644 --- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-colors.tex +++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-colors.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.05b} -\def\filedate{2022/01/28 } -\typeout{2022/01/28 4.05b tkz-tools-colors} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-colors} \makeatletter %<------ Initialisation of the colors with tkzSetUpColors -----------------> @@ -36,8 +36,8 @@ \pgfkeys{/tkzsupallcol/.cd, background/.store in = \tkz@suac@bkc, text/.store in = \tkz@suac@txt, - background = \tkz@backgroundcolor,% see tkz-base.cfg - text = \tkz@textcolor% idem + background = \tkz@backgroundcolor,% see tkz-base.cfg + text = \tkz@textcolor% idem } \def\tkzSetUpAllColors{\pgfutil@ifnextchar[{\tkz@SetUpAllColors}{% \tkz@SetUpAllColors[]}} diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-misc.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-misc.tex index 580dabf51f..83ae7c231c 100644 --- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-misc.tex +++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-misc.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.05b} -\def\filedate{2022/01/28 } -\typeout{2022/01/28 4.05b tkz-tools-misc.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-misc.tex} \makeatletter %<--------------------------------------------------------------------------–> % hline pb avec line diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-modules.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-modules.tex index a6467a428d..f662f8bfbe 100644 --- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-modules.tex +++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-modules.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.05b} -\def\filedate{2022/01/28 } -\typeout{2022/01/28 4.05b tkz-tools-modules.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-modules.tex} \makeatletter %<------------- % chargement des modules ----------------------------------> \def\tkz@obj@all{angles,arcs,compass,defcircles,deflines,defpoints,defpointsby,defpointsrnd,defpointswith,polygons,protractor,sectors,show,triangles}% diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-print.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-print.tex index a727e2fb39..9776e57679 100644 --- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-print.tex +++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-print.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.05b} -\def\filedate{2022/01/28 } -\typeout{2022/01/28 4.05b tkz-tools-print} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-print} \makeatletter %<------------- tkzPrintFrac ----------------------------------> \def\tkzPrintFrac#1#2{% diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-text.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-text.tex index 819505a99c..5c1f7fb8af 100644 --- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-text.tex +++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-text.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.05b} -\def\filedate{2022/01/28 } -\typeout{2022/01/28 4.05b tkz-tools-text.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-text.tex} \makeatletter %<--------------------------------------------------------------------------–> % tkzText @@ -50,7 +50,7 @@ \pgfkeys{/tkzlegend/.cd, line/.is if = tkz@legend@line, line/.default = true, - line = false, + line = false, /tkzlegend/.search also = {/tikz}, } \def\tkzLegend{\pgfutil@ifnextchar[{\tkz@Legend}{\tkz@Legend[]}} diff --git a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-utilities.tex b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-utilities.tex index c304cee394..f132d6053a 100644 --- a/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-utilities.tex +++ b/macros/latex/contrib/tkz/tkz-base/latex/tkz-tools-utilities.tex @@ -1,5 +1,5 @@ -% tkz-tools-utilities -% Copyright 2022 Alain Matthes +% tkz-tools-eu-utilities +% Copyright 2022 Alain Matthes % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.05b} -\def\filedate{2022/01/28 } -\typeout{2022/01/28 4.05b tkz-tools-utilities.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-utilities.tex} \makeatletter \pgfkeys{/tkzClip/.cd, space/.store in = {\tkz@CLI@space}, @@ -29,7 +29,7 @@ space = {}} \edef\tkz@yya{\fpeval{\tkz@ya-\tkz@CLI@space}} \edef\tkz@xxb{\fpeval{\tkz@xb+\tkz@CLI@space}} % correction bug 2020 \edef\tkz@yyb{\fpeval{\tkz@yb+\tkz@CLI@space}} - \clip (\tkz@xxa,\tkz@yya) rectangle (\tkz@xxb,\tkz@yyb); + \clip (\tkz@xxa,\tkz@yya) rectangle (\tkz@xxb,\tkz@yyb); \fi } @@ -168,5 +168,69 @@ space = {}} } \def\EnabledNumprint{\let\numprint\tkz@numprint} %<---------------------------------------------------------–> +\def\tkzSwapPoints(#1,#2){ + \pgfnodealias{tkzPointTmp}{#2} + \pgfnodealias{#2}{#1} + \pgfnodealias{#1}{tkzPointTmp}} +%<---------------------------------------------------------–> +\def\tkzPermute(#1,#2,#3){ +\tkzURotateWithNodes(#1,#3,#2)(#3) \tkzGetPoint{tkzpt} +\tkzURotateWithNodes(#1,#2,#3)(#2) \tkzGetPoint{#2} +\tkzSwapPoints(tkzpt,#3)} +%<---------------------------------------------------------–> +\def\tkzDotProduct(#1,#2,#3){% +\begingroup +\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% +\edef\tkz@dotprod{\fpeval{round(((\tkz@bx-\tkz@ax)*(\tkz@cx-\tkz@ax)+(\tkz@by-\tkz@ay)*(\tkz@cy-\tkz@ay))/(809.55841),5)}} +\global\let\tkzMathResult\tkz@dotprod +\endgroup} +%<---------------------------------------------------------–> + \def\tkzGetResult#1{% + \global\expandafter\edef\csname #1\endcsname{\tkzMathResult}} +%<---------------------------------------------------------–> +% #1,#2 and #3 aligned +\def\tkzIsLinear(#1,#2,#3){% +\begingroup +\tkz@@CalcLengthcm(#1,#2){tkz@la} +\tkz@@CalcLengthcm(#1,#3){tkz@lb} +\tkzDotProduct(#1,#2,#3) +\edef\tkzMathResult{\fpeval{abs(abs(\tkzMathResult)-(\tkz@la)*(\tkz@lb))}} +\ifdim \tkzMathResult pt < 0.0001 pt\relax% +\global\tkzLineartrue +\else +\global\tkzLinearfalse +\fi +\endgroup +} +%<---------------------------------------------------------–> +% syntax : vec(#2,#1) ortho vec(#3,#1) +\def\tkzIsOrtho(#1,#2,#3){% +\begingroup +\tkzDotProduct(#1,#2,#3) +\edef\tkzMathResult{\fpeval{abs(\tkzMathResult)}} +\ifdim \tkzMathResult pt < 0.0001 pt\relax% +\global\tkzOrthotrue +\else +\global\tkzOrthofalse +\fi +\endgroup +} +%<---------------------------------------------------------–> + \def\tkzHelpGrid{% + \draw[help lines] (current bounding box.south west) grid + (current bounding box.north east); + } + \makeatother \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-euclide/README.md b/macros/latex/contrib/tkz/tkz-euclide/README.md index 0f6e6b8380..89c6ffc1e7 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/README.md +++ b/macros/latex/contrib/tkz/tkz-euclide/README.md @@ -1,6 +1,6 @@ # tkz-euclide — for euclidean geometry -Release 4.051 b 2022/02/25 +Release 4.2c 2022/07/14 ## Description @@ -67,14 +67,98 @@ files, ready for compilation. Other examples, in French, are on my site. -## Compatibility - -The new version of `tkz-euclide` is *not* fully compatible with the version -3.06 but the differences are minor. ## History -- 4.051b Fixed a problem when tkz-base is loaded. +- 4.2c + Now \tkzDefCircle gives two points as results: the center of the circle and a point of the circle. When a point of the circle is known, it is enough to use \tkzGetPoint or \tkzGetFirstPoint + to get the center, otherwise \tkzGetPoints will give you the center and a point of the circle. You can always get the length of the radius with \tkzGetLength . I wanted to favor working with nodes and banish the appearance of numbers in the code. + + In order to isolate the definitions, I deleted or modified certain macros which are: \tkzDrawLine , \tkzDrawTriangle , \tkzDrawCircle , \tkzDrawSemiCircle and \tkzDrawRectangle ; + + Thus \tkzDrawSquare(A,B) becomes \tkzDefSquare(A,B) \tkzGetPoints{C}{D} then + + \tkzDrawPolygon(A,B,C,D) ; + + + + If you want to draw a circle, you can't do so \tkzDrawCircle[R](A,1) . First you have to define the point through which the circle passes, so you have to do + \tkzDefCircle[R](A,1) \tkzGetPoint{a} and finally \tkzDrawCircle(A,a) . Another possibilty is to define a point on the circle \tkzDefShiftPoint[A](1,O){a} ; + + + The following macros tkzDefCircleBy[orthogonal through] and \tkzDefCircleBy[orthogonal from] become tkzDefCircle[orthogonal through] and \tkzDefCircle[orthogonal from] ; + + + \tkzDefLine[euler](A,B,C) is a macro that allows you to obtain the line of \tkzname{Euler} when possible. \tkzDefLine[altitude](A,B,C) is possible again, as well as \tkzDefLine[tangent at=A](O) and \tkzDefLine[tangent from=P](O,A) which did not works; + + + \tkzDefTangent is replaced by \tkzDelLine[tangent from = ...] or \tkzDelLine[tangent at = ...] + + + I added the macro \tkzPicAngle[tikz options](A,B,C) for those who prefer to use \TIKZ\ . + + + The order of the arguments of the macro \tkzcname{tkzDefPointOnCircle} has changed: now it is center, angle and point or radius. + I have added two options for working with radians which are \tkzname{through in rad} and \tkzname{R in rad}. + + + I added the option \tkzname{reverse} to the arcs paths. This allows to reverse the path and to reverse if necessary the arrows that would be present. + + + I have unified the styles for the labels. There is now only \tkzname{label style} left which is valid for points, segments, lines, circles and angles. I have deleted \tkzname{label seg style} \tkzname{label line style} and \tkzname{label angle style} + + I added the macro tkzFillAngles to use several angles. + + Correction option \tkzname{return} witk \tkzcname{tkzProtractor} + + As a reminder, the following changes have been made previously: + + \tkzDrawMedian , \tkzDrawBisector , \tkzDrawAltitude , \tkzDrawMedians , \tkzDrawBisectors et \tkzDrawAltitudes do not exist anymore. The creation and drawing separation is not respected so it is preferable to first create the coordinates of these points with \tkzDefSpcTriangle[median] and then to choose the ones you are going to draw with \tkzDrawSegments or \tkzDrawLines ; + + \tkzDrawTriangle has been deleted. \tkzDrawTriangle[equilateral] was handy but it is better to get the third point with \tkzDefTriangle[equilateral] and then draw with \tkzDrawPolygon ; idem for \tkzDrawSquare and \tkzDrawGoldRectangle ; + + + The circle inversion was badly defined so I rewrote the macro. The input arguments are always the center and a point of the circle, the output arguments are the center of the image circle and a point of the image circle or two points of the image line if the antecedent circle passes through the pole of the inversion. If the circle passes the inversion center, the image is a straight line, the validity of the procedure depends on the choice of the point on the antecedent circle; + + Correct allocation for gold sublime and euclide triangles; + + + I added the option " next to" for the intersections LC and CC; + + + Correction option isoceles right; + + + \tkzDefMidArc(O,A,B) gives the middle of the arc center $O$ from $A$ to $B$; + + Good news : Some useful tools have been added. They are present on an experimental basis and will undoubtedly need to be improved; + + + The options "orthogonal from and through" depend now of \tkzcname{tkzDefCircleBy} + + + \tkzDotProduct(A,B,C) computes the scalar product in an orthogonal reference system of the vectors $\overrightarrow{A,B}$ and $\overrightarrow{A,C}$. + + \tkzDotProduct(A,B,C)=aa'+bb' if vec{AB} =(a,b) and vec{AC} =(a',b') + + + \tkzPowerCircle(A)(B,C) power of point $A$ with respect to the circle of center $B$ passing through $C$; + + + \tkzDefRadicalAxis(A,B)(C,D) Radical axis of two circles of center $A$ and $C$; + + + Some tests : \tkzIsOrtho(A,B,C) and \tkzIsLinear(A,B,C) The first indicates whether the lines $(A,B)$ and $(A,C)$ are orthogonal. The second indicates whether the points $A$, $B$ and $C$ are aligned; + + \tkzIsLinear(A,B,C) if $A$,$B$,$C$ are aligned then \tkzLineartrue + you can use \iftkzLinear (idem for \tkzIsOrtho ); + + A style for vectors has been added that you can of course modify + tikzset{vector style/.style={>=Latex,->}} ; + + + Now it's possible to add an arrow on a line or a circle with the option tkz arrow . + - 4.05b \tkzInterLC new option near new method to choice the points diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-FAQ.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-FAQ.tex index 07b1982dc7..8aee9b7021 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-FAQ.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-FAQ.tex @@ -15,7 +15,6 @@ \item \tkzcname{tkzGetPoint\{A\}} in place of \tkzcname{tkzGetFirstPoint\{A\}}. When a macro gives two points as results, either we retrieve these points using \tkzcname{tkzGetPoints\{A\}\{B\}}, or we retrieve only one of the two points, using \tkzcname{tkzGetFirstPoint\{A\}} or \tkzcname{tkzGetSecondPoint\{A\}}. These two points can be used with the reference \tkzname{tkzFirstPointResult} or \tkzname{tkzSecondPointResult}. It is possible that a third point is given as\\ \tkzname{tkzPointResult}; - \item Mixing options and arguments; all macros that use a circle need to know the radius of the circle. If the radius is given by a measure then the option includes a \tkzname{R}. @@ -26,7 +25,7 @@ \item Do not mix the syntax of \tkzNamePack{pgfmath} and \tkzNamePack{xfp}. I've often chosen \tkzNamePack{xfp} but if you prefer pgfmath then do your calculations before passing parameters. - \item Error "dimension too large" : In some cases, this error occurs. One way to avoid it is to use the "\tkzname{xfp}" option. When this option is used in an environment, the "veclen" function is replaced by a function dependent on "xfp". For example, an error occurs if you use the macro \tkzcname{tkzDrawArc} + \item Error "dimension too large" : In some cases, this error occurs. One way to avoid it is to use the "\tkzname{xfp}" option. When this option is used in an scope, the "veclen" function is replaced by a function dependent on "xfp". Do not use intersection macros in this scope. For example, an error occurs if you use the macro \tkzcname{tkzDrawArc} with too small an angle. The error is produced by the \NameLib{decoration} library when you want to place a mark on an arc. Even if the mark is absent, the error is still present. \end{itemize} diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-angles.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-angles.tex index d1e2e2c868..d077256d8a 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-angles.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-angles.tex @@ -5,7 +5,6 @@ In trigonometry and mathematics in general, plane angles are conventionally meas Let us agree that an angle measured counterclockwise is positive. \begin{center} - \begin{tikzpicture}[scale=.75] \node {clockwise}; \tkzDefPoint(0,0){O} \tkzDefPoint(90:2){A}\tkzDefPoint(180:2){B} @@ -16,7 +15,6 @@ Let us agree that an angle measured counterclockwise is positive. \tkzDefPoint(0,0){O} \tkzDefPoint(90:2){A}\tkzDefPoint(0:2){B} \tkzDrawArc[black,line width=2pt,arrows = {-Stealth}](O,A)(B) \end{tikzpicture} - \end{center} \tkzname{Angles} are involved in several macros like \tkzcname{tkzDefPoint},\tkzcname{tkzDefPointBy[rotation = \dots]}, \tkzcname{tkzDrawArc} @@ -33,7 +31,7 @@ Let us agree that an angle measured counterclockwise is positive. \tkzMarkAngles[size=2,-Stealth,teal](A,O,B) \tkzFindAngle(A,O,B) \tkzGetAngle{an} \tkzLabelAngle[pos=1,teal](A,O,B){$ \pgfmathprintnumber{\an}^\circ$} - \tkzAutoLabelPoints[center=O](A,B) + \tkzLabelPoints(A) \tkzLabelPoints[above](B) \end{tikzpicture}} {Rotation $80^\circ$ from $(O,A)$ to $(O,B)$\\ {\textbackslash}tkzDefPointBy[rotation=center O angle 80]} @@ -45,7 +43,7 @@ Let us agree that an angle measured counterclockwise is positive. \tkzMarkAngles[size=2,Stealth-,red](B,O,A) \tkzFindAngle(B,O,A) \tkzGetAngle{an} \tkzLabelAngle[pos=1,red](B,O,A){$-\pgfmathprintnumber{\an}^\circ$} - \tkzAutoLabelPoints[center=O](A,B) +\tkzLabelPoints[right](A) \tkzLabelPoints[below](B) \end{tikzpicture}} {Rotation $-80^\circ$ from $(O,A)$ to $(O,B)$\\ {\textbackslash}tkzDefPointBy[rotation=center O angle -80]} @@ -57,7 +55,7 @@ Let us agree that an angle measured counterclockwise is positive. \tkzMarkAngles[size=1.5,-Stealth,teal](A,O,B) \tkzFindAngle(A,O,B) \tkzGetAngle{an} \tkzLabelAngle[pos=1,teal](A,O,B){$ \pgfmathprintnumber{\an}^\circ$} - \tkzAutoLabelPoints[center=O](A,B) +\tkzLabelPoints(A) \tkzLabelPoints[above](B) \end{tikzpicture}} { {\textbackslash}tkzFindAngle(A,O,B) gives $80$} & @@ -68,7 +66,7 @@ Let us agree that an angle measured counterclockwise is positive. \tkzMarkAngles[size=1,-Stealth,red](A,O,B) \tkzFindAngle(A,O,B) \tkzGetAngle{an} \tkzLabelAngle[pos=.75,red](A,O,B){$\pgfmathprintnumber{\an}^\circ$} - \tkzAutoLabelPoints[center=O](A,B) +\tkzLabelPoints[right](A) \tkzLabelPoints[below](B) \end{tikzpicture}} {{\textbackslash}tkzFindAngle(A,O,B) gives $\pgfmathprintnumber{\an}^\circ$} \\\hline @@ -78,8 +76,6 @@ Let us agree that an angle measured counterclockwise is positive. As we can see, the $-80^\circ$ rotation defines a clockwise angle but the macro \tkzcname{tkzFindAngle} recovers a counterclockwise angle. - - \subsection{Recovering an angle \tkzcname{tkzGetAngle}} \begin{NewMacroBox}{tkzGetAngle}{\parg{name of macro}}% Assigns the value in degree of an angle to a macro. The value is positive and between $0^\circ$ and $360^\circ$. This macro retrieves \tkzcname{tkzAngleResult} and stores the result in a new macro. @@ -92,8 +88,8 @@ arguments & example & explanation \\ \midrule \TAline{name of macro} {\tkzcname{tkzGetAngle}\{ang\}}{\tkzcname{ang} contains the value of the angle.} \end{tabular} - \end{NewMacroBox} + This is an auxiliary macro that allows you to retrieve the result of the following macro \tkzcname{tkzFindAngle}. \subsection{Angle formed by three points} @@ -159,7 +155,6 @@ The measure is always positive and between $0^\circ$ and $360^\circ$. With the \end{tikzpicture} \end{tkzexample} - \subsubsection{Angle between two circles} We are looking for the angle formed by the tangents at a point of intersection @@ -169,9 +164,9 @@ We are looking for the angle formed by the tangents at a point of intersection fixed,precision=1} \tkzDefPoints{0/0/A,6/0/B,4/2/C} \tkzDrawCircles(A,C B,C) -\tkzDefTangent[at=C](A) \tkzGetPoint{a} +\tkzDefLine[tangent at=C](A) \tkzGetPoint{a} \tkzDefPointsBy[symmetry = center C](a){d} -\tkzDefTangent[at=C](B) \tkzGetPoint{b} +\tkzDefLine[tangent at=C](B) \tkzGetPoint{b} \tkzDrawLines[add=1 and 4](a,C C,b) \tkzFillAngle[fill=teal,opacity=.2% ,size=2](b,C,d) @@ -181,7 +176,6 @@ We are looking for the angle formed by the tangents at a point of intersection \end{tikzpicture} \end{tkzexample} - \subsection{Angle formed by a straight line with the horizontal axis \tkzcname{tkzFindSlopeAngle}} Much more interesting than the last one. The result is between -180 degrees and +180 degrees. @@ -265,5 +259,5 @@ Here is another version of the construction of a mediator $\pgfmathprintnumber{\SAD}^\circ$} \end{tikzpicture} \end{tkzexample} - + \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-circleby.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-circleby.tex index 4df2f61333..7af83e2aa1 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-circleby.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-circleby.tex @@ -8,8 +8,6 @@ These transformations are: \item central symmetry; \item orthogonal projection; \item rotation (degrees); - \item orthogonal from ; - \item orthogonal through; \item inversion. \end{itemize} @@ -18,7 +16,7 @@ The choice of transformations is made through the options. The macro is \tkzcnam \tkzDefCircleBy[translation= from A to A'](O,M) \end{tkzltxexample} $O$ is the center and $M$ is a point on the circle. -The image is a circle. The new center is |tkzFirstPointResult| and |tkzSecondPointResult| is a point on the new circle. You can get the results with the macro \tkzcname{tkzGetPoints} . +The image is a circle. The new center is |tkzFirstPointResult| and |tkzSecondPointResult| is a point on the new circle. You can get the results with the macro \tkzcname{tkzGetPoints}. \medskip \begin{NewMacroBox}{tkzDefCircleBy}{\oarg{local options}\parg{pt1,pt2}}% The argument is a couple of points. The results is a couple of points. If you want to keep these points then the macro \tkzcname{tkzGetPoints\{O'\}\{M'\}} allows you to assign the name \tkzname{O'} to the center and \tkzname{M'} to the point on the circle. @@ -40,18 +38,15 @@ options & & examples \\ \TOline{symmetry } {= center \#1}{[symmetry=center A](O,M)} \TOline{projection }{= onto \#1--\#2}{[projection=onto A--B](O,M)} \TOline{rotation } {= center \#1 angle \#2}{[rotation=center O angle 30](O,M)} -\TOline{orthogonal from} {= \#1}{[orthogonal from = A ](O,M)} -\TOline{orthogonal through}{= \#1 and \#2}{[orthogonal through = A and B](O,M)} \TOline{inversion}{= center \#1 through \#2}{[inversion =center O through A](O,M)} % \TOline{inversion negative}{= center \#1 through \#2}{[inversion negative =center O through A](O,M)} \bottomrule \end{tabular} -The image is only defined and not drawn. +\medskip +\emph{The image is only defined and not drawn.} \end{NewMacroBox} -\subsubsection{Examples of transformations} - \subsubsection{\tkzname{Translation}} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[>=latex] @@ -67,7 +62,7 @@ The image is only defined and not drawn. \end{tikzpicture} \end{tkzexample} - \subsubsection{\tkzname{Reflection} (orthogonal symmetry)} +\subsubsection{\tkzname{Reflection} (orthogonal symmetry)} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[>=latex] @@ -79,11 +74,10 @@ The image is only defined and not drawn. \tkzDrawLine[add =0 and 1][orange](A,B) \tkzDrawCircles(C,D C',D') \tkzLabelPoints[color=teal](A,B,C,C') - \tkzLabelPoints[color=teal,above](D,D') + \tkzLabelPoints[color=teal,right](D,D') \end{tikzpicture} \end{tkzexample} - \subsubsection{\tkzname{Homothety}} \begin{tkzexample}[latex=7cm,small] @@ -95,11 +89,10 @@ The image is only defined and not drawn. \tkzDrawPoints[teal](A,C,D,C',D') \tkzDrawCircles(C,D C',D') \tkzLabelPoints[color=teal](A,C,C') - \tkzLabelPoints[color=teal,above](D,D') + \tkzLabelPoints[color=teal,right](D,D') \end{tikzpicture} \end{tkzexample} - \subsubsection{\tkzname{Symmetry}} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=1] @@ -129,67 +122,11 @@ The image is only defined and not drawn. \end{tikzpicture} \end{tkzexample} - -\subsubsection{\tkzname{Orthogonal from}} -Orthogonal circle of given center. \tkzcname{tkzGetPoints\{z1\}\{z2\}} gives two points of the circle. - -\begin{tkzexample}[latex=7cm,small] -\begin{tikzpicture}[scale=.75] - \tkzDefPoints{0/0/O,1/0/A} - \tkzDefPoints{1.5/1.25/B,-2/-3/C} - \tkzDefCircleBy[orthogonal from=B](O,A) - \tkzGetPoints{z1}{z2} - \tkzDefCircleBy[orthogonal from=C](O,A) - \tkzGetPoints{t1}{t2} - \tkzDrawCircle(O,A) - \tkzDrawCircles[new](B,z1 C,t1) - \tkzDrawPoints(t1,t2,C) - \tkzDrawPoints(z1,z2,O,A,B) - \tkzLabelPoints(O,A,B,C) -\end{tikzpicture} -\end{tkzexample} - -\subsubsection{\tkzname{Orthogonal from} : Right angle between circles} -We are looking for a circle orthogonal to the given circle. - -\begin{tkzexample}[latex=7cm,small] -\begin{tikzpicture}[scale=.4] -\tkzDefPoints{0/0/A,6/0/B,4/2/D} -\tkzDefCircleBy[orthogonal from=B](A,D) -\tkzGetSecondPoint{C} -\tkzDrawCircles(A,C B,C) -\tkzDefTangent[at=C](A) \tkzGetPoint{a} -\tkzDefPointsBy[symmetry = center C](a){d} -\tkzDefTangent[at=C](B) \tkzGetPoint{b} -\tkzDrawLines[add=1 and 4](a,C C,b) -\tkzDrawSegments(A,C B,C) -\tkzMarkRightAngle[fill=teal,opacity=.2,size=1](b,C,d) -\end{tikzpicture} -\end{tkzexample} - - \subsubsection{\tkzname{Orthogonal through}} -Orthogonal circle passing through two given points. -\begin{tkzexample}[latex=6cm,small] -\begin{tikzpicture}[scale=1] - \tkzDefPoint(0,0){O} - \tkzDefPoint(1,0){A} - \tkzDrawCircle(O,A) - \tkzDefPoint(-1.5,-1.5){z1} - \tkzDefPoint(1.5,-1.25){z2} - \tkzDefCircleBy[orthogonal through=z1 and z2](O,A) - \tkzGetPoint{c} - \tkzDrawCircle[new](tkzPointResult,z1) - \tkzDrawPoints[new](O,A,z1,z2,c) - \tkzLabelPoints(O,A,z1,z2,c) -\end{tikzpicture} -\end{tkzexample} - - \subsubsection{\tkzname{Inversion}} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=1.5] -\tkzSetUpPoint[size=4,color=red,fill=red!20] +\tkzSetUpPoint[size=3,color=red,fill=red!20] \tkzSetUpStyle[color=purple,ultra thin]{st1} \tkzSetUpStyle[color=cyan,ultra thin]{st2} \tkzDefPoint(2,0){A} \tkzDefPoint(3,0){B} @@ -204,5 +141,4 @@ Orthogonal circle passing through two given points. \end{tikzpicture} \end{tkzexample} - \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-circles.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-circles.tex index e0d1ccd6fe..72219d5ef5 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-circles.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-circles.tex @@ -10,8 +10,7 @@ Among the following macros, one will allow you to draw a circle, which is not a \item then a macro that allows you to color in a disc, but without drawing the circle \tkzcname{tkzFillCircle}; \item sometimes, it is necessary for a drawing to be contained in a disk, this is the role assigned to \tkzcname{tkzClipCircle}; - - + \item it finally remains to be able to give a label to designate a circle and if several possibilities are offered, we will see here \tkzcname{tkzLabelCircle}. \end{itemize} @@ -20,7 +19,7 @@ Among the following macros, one will allow you to draw a circle, which is not a This macro allows you to retrieve the characteristics (center and radius) of certain circles. \begin{NewMacroBox}{tkzDefCircle}{\oarg{local options}\parg{A,B} or \parg{A,B,C}}% -\tkzHandBomb\ Attention the arguments are lists of two or three points. This macro is either used in partnership with \\ \tkzcname{tkzGetPoint} and/or \tkzcname{tkzGetLength} to obtain the center and the radius of the circle, or by using \\ \tkzname{tkzPointResult} and \tkzname{tkzLengthResult} if it is not necessary to keep the results. +\tkzHandBomb\ Attention the arguments are lists of two or three points. This macro is either used in partnership with \\ \tkzcname{tkzGetPoints} to obtain the center and a point on the circle, or by using \\ \tkzname{tkzFirstPointResult} and \tkzname{tkzSecondPointResult} if it is not necessary to keep the results. You can also use \tkzcname{tkzGetLength} to get the radius. \medskip \begin{tabular}{lll}% @@ -36,48 +35,28 @@ arguments & example & explanation \\ \toprule options & default & definition \\ \midrule -\TOline{through} {through}{circle characterized by two points defining a radius} -\TOline{diameter} {through}{circle characterized by two points defining a diameter} -\TOline{circum} {through}{circle circumscribed of a triangle} -\TOline{in} {through}{incircle a triangle} -\TOline{ex} {through}{excircle of a triangle} -\TOline{euler or nine}{through}{Euler's Circle} -\TOline{spieker} {through}{Spieker Circle} -\TOline{apollonius} {through}{circle of Apollonius} +\TOline{R} {circum}{circle characterized by a center and a radius} +\TOline{diameter}{circum}{circle characterized by two points defining a diameter} +\TOline{circum} {circum}{circle circumscribed of a triangle} +\TOline{in} {circum}{incircle a triangle} +\TOline{ex} {circum}{excircle of a triangle} +\TOline{euler or nine}{circum}{Euler's Circle} +\TOline{spieker} {circum}{Spieker Circle} +\TOline{apollonius} {circum}{circle of Apollonius} +\TOline{orthogonal from} {circum}{[orthogonal from = A ](O,M)} +\TOline{orthogonal through}{circum}{[orthogonal through = A and B](O,M)} \TOline{K} {1}{coefficient used for a circle of Apollonius} \bottomrule \end{tabular} -{In the following examples, I draw the circles with a macro not yet presented, but this is not necessary. In some cases you may only need the center or the radius.} +\medskip +\emph{In the following examples, I draw the circles with a macro not yet presented. You may only need the center and a point on the circle. } \end{NewMacroBox} - \subsubsection{Example with a random point and option \tkzname{through}} - -\begin{tkzexample}[latex=7 cm,small] -\begin{tikzpicture}[scale=1] - \tkzDefPoint(0,4){A} - \tkzDefPoint(2,2){B} - \tkzDefMidPoint(A,B) \tkzGetPoint{I} - \tkzDefRandPointOn[segment = I--B] - \tkzGetPoint{C} - \tkzDefCircle[through](A,C) - \tkzGetLength{rACcm} - \tkzcmtopt(\rACcm){rACpt} - \tkzDrawCircle(A,C) - \tkzDrawPoints(A,B,C) - \tkzLabelPoints(A,B,C) - \tkzLabelCircle[draw, - text width=3cm,text centered, - font=\scriptsize,below=1cm](A,C)(-90)% - {The radius measurement is: - \rACcm cm i.e. \rACpt pt} -\end{tikzpicture} - \end{tkzexample} - \subsubsection{Example with option \tkzname{diameter}} - It is simpler here to search directly for the middle of $[AB]$. - \begin{tkzexample}[latex=7cm,small] - \begin{tikzpicture}[scale=1] + It is simpler here to search directly for the middle of $[AB]$. The result is the center and if necessary +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[scale=1] \tkzDefPoint(0,0){A} \tkzDefPoint(2,2){B} \tkzDefCircle[diameter](A,B) @@ -86,20 +65,20 @@ options & default & definition \\ \tkzDrawSegment(A,B) \tkzDrawPoints(A,B,O) \tkzLabelPoints[below](A,B,O) - \end{tikzpicture} - \end{tkzexample} +\end{tikzpicture} +\end{tkzexample} - \subsubsection{Circles inscribed and circumscribed for a given triangle} +\subsubsection{Circles inscribed and circumscribed for a given triangle} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.75] \tkzDefPoint(2,2){A} \tkzDefPoint(5,-2){B} \tkzDefPoint(1,-2){C} \tkzDefCircle[in](A,B,C) - \tkzGetPoint{I} \tkzGetLength{rIN} + \tkzGetPoints{I}{x} \tkzDefCircle[circum](A,B,C) - \tkzGetPoint{K} \tkzGetLength{rCI} - \tkzDrawCircles[R,new](I,{\rIN} K,{\rCI}) + \tkzGetPoint{K} + \tkzDrawCircles[new](I,x K,A) \tkzLabelPoints[below](B,C) \tkzLabelPoints[above left](A,I,K) \tkzDrawPolygon(A,B,C) @@ -107,42 +86,39 @@ options & default & definition \\ \end{tikzpicture} \end{tkzexample} - \subsubsection{Example with option \tkzname{ex}} +\subsubsection{Example with option \tkzname{ex}} We want to define an excircle of a triangle relatively to point $C$ \begin{tkzexample}[latex=8cm,small] \begin{tikzpicture}[scale=.75] \tkzDefPoints{ 0/0/A,4/0/B,0.8/4/C} \tkzDefCircle[ex](B,C,A) - \tkzGetPoint{J_c} \tkzGetLength{rc} + \tkzGetPoints{J_c}{h} \tkzDefPointBy[projection=onto A--C ](J_c) \tkzGetPoint{X_c} \tkzDefPointBy[projection=onto A--B ](J_c) \tkzGetPoint{Y_c} + \tkzDefCircle[in](A,B,C) + \tkzGetPoints{I}{y} + \tkzDrawCircles[color=lightgray](J_c,h I,y) + \tkzDefPointBy[projection=onto A--C ](I) + \tkzGetPoint{F} + \tkzDefPointBy[projection=onto A--B ](I) + \tkzGetPoint{D} \tkzDrawPolygon(A,B,C) - \tkzDrawCircle[R,color=lightgray](J_c,\rc) - % possible \tkzDrawCircle[ex](A,B,C) - \tkzDrawCircle[in,new](A,B,C) - \tkzGetPoint{I} - \tkzDefPointBy[projection=onto A--C ](I) - \tkzGetPoint{F} - \tkzDefPointBy[projection=onto A--B ](I) - \tkzGetPoint{D} - \tkzDrawLines[add=0 and 2.2,dashed](C,A C,B) - \tkzDrawSegments[dashed](J_c,X_c I,D I,F% - J_c,Y_c) - \tkzMarkRightAngles(A,F,I B,D,I J_c,X_c,A% - J_c,Y_c,B) + \tkzDrawLines[add=0 and 1.5](C,A C,B) + \tkzDrawSegments(J_c,X_c I,D I,F J_c,Y_c) + \tkzMarkRightAngles(A,F,I B,D,I J_c,X_c,A J_c,Y_c,B) \tkzDrawPoints(B,C,A,I,D,F,X_c,J_c,Y_c) - \tkzLabelPoints(B,A,J_c,I,D,X_c,Y_c) + \tkzLabelPoints(B,A,J_c,I,D) + \tkzLabelPoints[above](Y_c) + \tkzLabelPoints[left](X_c) \tkzLabelPoints[above left](C) \tkzLabelPoints[left](F) -\end{tikzpicture} +\end{tikzpicture} \end{tkzexample} - - - \subsubsection{Euler's circle for a given triangle with option \tkzname{euler}} +\subsubsection{Euler's circle for a given triangle with option \tkzname{euler}} We verify that this circle passes through the middle of each side. \begin{tkzexample}[latex=6cm,small] @@ -150,31 +126,30 @@ We verify that this circle passes through the middle of each side. \tkzDefPoint(5,3.5){A} \tkzDefPoint(0,0){B} \tkzDefPoint(7,0){C} \tkzDefCircle[euler](A,B,C) - \tkzGetPoint{E} \tkzGetLength{rEuler} + \tkzGetPoints{E}{e} \tkzDefSpcTriangle[medial](A,B,C){M_a,M_b,M_c} + \tkzDrawCircle[new](E,e) \tkzDrawPoints(A,B,C,E,M_a,M_b,M_c) - \tkzDrawCircle[R](E,\rEuler) \tkzDrawPolygon(A,B,C) \tkzLabelPoints[below](B,C) \tkzLabelPoints[left](A,E) \end{tikzpicture} \end{tkzexample} - \subsubsection{Apollonius circles for a given segment option \tkzname{apollonius}} +\subsubsection{Apollonius circles for a given segment option \tkzname{apollonius}} \begin{tkzexample}[latex=9cm,small] \begin{tikzpicture}[scale=0.75] \tkzDefPoint(0,0){A} \tkzDefPoint(4,0){B} \tkzDefCircle[apollonius,K=2](A,B) - \tkzGetPoint{K1} - \tkzGetLength{rAp} - \tkzDrawCircle[R,color = teal!50!black, - fill=teal!20,opacity=.4](K1,\rAp) + \tkzGetPoints{K1}{x} + \tkzDrawCircle[color = teal!50!black, + fill=teal!20,opacity=.4](K1,x) \tkzDefCircle[apollonius,K=3](A,B) - \tkzGetPoint{K2} \tkzGetLength{rAp} - \tkzDrawCircle[R,color=orange!50, - fill=orange!20,opacity=.4](K2,\rAp) + \tkzGetPoints{K2}{y} + \tkzDrawCircle[color=orange!50, + fill=orange!20,opacity=.4](K2,y) \tkzLabelPoints[below](A,B,K1,K2) \tkzDrawPoints(A,B,K1,K2) \tkzDrawLine[add=.2 and 1](A,B) @@ -191,30 +166,22 @@ We verify that this circle passes through the middle of each side. \tkzDefPoint(0,0){A} \tkzDefPoint(3,0){B} \tkzDefPoint(1,2.5){C} - \tkzDefCircle[ex](A,B,C) \tkzGetPoint{I} - \tkzGetLength{rI} - \tkzDefCircle[ex](C,A,B) \tkzGetPoint{J} - \tkzGetLength{rJ} - \tkzDefCircle[ex](B,C,A) \tkzGetPoint{K} - \tkzGetLength{rK} - \tkzDefCircle[in](B,C,A) \tkzGetPoint{O} - \tkzGetLength{rO} + \tkzDefCircle[ex](A,B,C) \tkzGetPoints{I}{i} + \tkzDefCircle[ex](C,A,B) \tkzGetPoints{J}{j} + \tkzDefCircle[ex](B,C,A) \tkzGetPoints{K}{k} + \tkzDefCircle[in](B,C,A) \tkzGetPoints{O}{o} + \tkzDrawCircles[new](J,j I,i K,k O,o) \tkzDrawLines[add=1.5 and 1.5](A,B A,C B,C) - \tkzDrawPoints(I,J,K) - \tkzDrawPolygon(A,B,C) - \tkzDrawPolygon[dashed](I,J,K) - \tkzDrawCircle[R,teal](O,\rO) - \tkzDrawSegments[dashed](A,K B,J C,I) + \tkzDrawPolygon[purple](I,J,K) + \tkzDrawSegments[new](A,K B,J C,I) \tkzDrawPoints(A,B,C) - \tkzDrawCircles[R,new](J,{\rJ} I,{\rI}% - K,{\rK}) + \tkzDrawPoints[new](I,J,K) \tkzLabelPoints(A,B,C,I,J,K) \end{tikzpicture} \end{tkzexample} - \subsubsection{Spieker circle with option \tkzname{spieker}} -The incircle of the medial triangle $M_aM_bM_c$ is the Spieker circle: - +\subsubsection{Spieker circle with option \tkzname{spieker}} +The incircle of the medial triangle $M_aM_bM_c$ is the Spieker circle: \begin{tkzexample}[latex=6cm, small] \begin{tikzpicture}[scale=1] @@ -225,112 +192,16 @@ The incircle of the medial triangle $M_aM_bM_c$ is the Spieker circle: \tkzDrawPolygon(A,B,C) \tkzDrawPolygon[cyan](M_a,M_b,M_c) \tkzDrawPoints(B,C,A) + \tkzDefCircle[spieker](A,B,C) \tkzDrawPoints[new](M_a,M_b,M_c,S_p) - \tkzDrawCircle[in,new](M_a,M_b,M_c) - \tkzAutoLabelPoints[center=S_p,dist=.3](M_a,M_b,M_c) - \tkzLabelPoints[right](S_p) - \tkzAutoLabelPoints[center=S_p](A,B,C) + \tkzDrawCircle[new](tkzFirstPointResult,tkzSecondPointResult) + \tkzLabelPoints[right](M_a) + \tkzLabelPoints[left](M_b) + \tkzLabelPoints[below](A,B,M_c,S_p) + \tkzLabelPoints[above](C) \end{tikzpicture} \end{tkzexample} - \subsubsection{Examples from js bibra tex.stackexchange.com} - -\begin{tikzpicture}[scale=0.4] -\tkzDefPoint(6,4){A} -\tkzDefPoint(6,-4){B} -\tkzDefMidPoint(B,A)\tkzGetPoint{P} -\tkzDefLine[orthogonal =through P](A,B)\tkzGetPoint{X} -\tkzDefCircle[through](X,P) -\tkzCalcLength(X,P)\tkzGetLength{rXP} -\tkzDefShiftPoint[X](180:\rXP*2){y} -\tkzDefPointWith[linear,K=0.3](y,P) \tkzGetPoint{x} -\tkzDrawPoints(X,x) -\tkzDrawCircles(x,P X,P) -\tkzLabelLine[pos=0.5,above](x,P){r1} -\tkzDefShiftPoint[X](-60:\rXP){X'} -\tkzDrawSegments[<->, >=triangle 45](X,X' P,x) -\tkzLabelLine[pos=0.5,above, sloped](X,X'){r} -\tkzLabelPoints[above](x) -\tkzLabelPoints[above](X) -\end{tikzpicture} - -\begin{tkzexample}[code only, small] -\begin{tikzpicture}[scale=0.4] -\tkzDefPoint(6,4){A} -\tkzDefPoint(6,-4){B} -\tkzDefMidPoint(B,A)\tkzGetPoint{P} -\tkzDefLine[orthogonal =through P](A,B) -\tkzGetPoint{X} -\tkzDefCircle[through](X,P) -\tkzCalcLength(X,P)\tkzGetLength{rXP} -\tkzDefShiftPoint[X](180:\rXP*2){y} -\tkzDefPointWith[linear,K=0.3](y,P) - \tkzGetPoint{x} -\tkzDrawPoints(X,x) -\tkzDrawCircles(x,P X,P) -\tkzLabelLine[pos=0.5,above](x,P){r1} -\tkzDefShiftPoint[X](-60:\rXP){X'} -\tkzDrawSegments[<->, >=triangle 45](X,X' P,x) -\tkzLabelLine[pos=0.5,above, sloped](X,X'){r} -\tkzLabelPoints[above](x) -\tkzLabelPoints[above](X) -\end{tikzpicture} -\end{tkzexample} - -\begin{tikzpicture} - \tkzDefPoint(0,4){A} - \tkzDefPoint(2,2){B} - \tkzDefMidPoint(B,A)\tkzGetPoint{P} - \tkzDefLine[orthogonal =through P](B,A) - \tkzGetPoint{X} - \tkzDefCircle[through](X,P) - \tkzGetLength{rXPpt} - \tkzpttocm(\rXPpt){rXPcm} - \tkzDefPointWith[linear,K=0.3](X,P) - \tkzGetPoint{x} - \tkzDefCircle[through](x,P) - \tkzGetLength{rxPpt} - \tkzpttocm(\rxPpt){rxPcm} - \tkzDrawCircles(X,P x,P) - \tkzDrawPoints(X,x) - \tkzDrawSegment[<->, >=triangle 45](x,P) - \tkzDrawSegment(P,X) - \tkzLabelPoints(X,x) - \tkzLabelLine[pos=0.5,left](x,P){r} - \tkzCalcLength[cm](X,P)\tkzGetLength{rXP} - \tkzDefShiftPoint[X](-90:\rXP){y} - \tkzDrawSegments[<->, >=triangle 45](X,y) - \tkzLabelLine[pos=0.5,left](X,y){R} -\end{tikzpicture} - -\begin{tkzexample}[code only, small] -\begin{tikzpicture} - \tkzDefPoint(0,4){A} - \tkzDefPoint(2,2){B} - \tkzDefMidPoint(B,A)\tkzGetPoint{P} - \tkzDefLine[orthogonal =through P](B,A) - \tkzGetPoint{X} - \tkzDefCircle[through](X,P) - \tkzGetLength{rXPpt} - \tkzpttocm(\rXPpt){rXPcm} - \tkzDefPointWith[linear,K=0.3](X,P) - \tkzGetPoint{x} - \tkzDefCircle[through](x,P) - \tkzGetLength{rxPpt} - \tkzpttocm(\rxPpt){rxPcm} - \tkzDrawCircles(X,P x,P) - \tkzDrawPoints(X,x) - \tkzDrawSegment[<->, >=triangle 45](x,P) - \tkzDrawSegment(P,X) - \tkzLabelPoints(X,x) - \tkzLabelLine[pos=0.5,left](x,P){r} - \tkzCalcLength[cm](X,P)\tkzGetLength{rXP} - \tkzDefShiftPoint[X](-90:\rXP){y} - \tkzDrawSegments[<->, >=triangle 45](X,y) - \tkzLabelLine[pos=0.5,left](X,y){R} -\end{tikzpicture} -\end{tkzexample} - \subsection{Projection of excenters} \begin{NewMacroBox}{tkzDefProjExcenter}{\oarg{local options}\parg{A,B,C}\parg{a,b,c}\marg{X,Y,Z}}% @@ -354,8 +225,9 @@ arguments & default & definition \\ \medskip \end{NewMacroBox} -\subsubsection{Excircles} +\subsubsection{\tkzname{Excircles}} +\begin{tkzexample}[vbox,small] \begin{tikzpicture}[scale=.6] \tikzset{line style/.append style={line width=.2pt}} \tikzset{label style/.append style={color=teal,font=\footnotesize}} @@ -363,7 +235,6 @@ arguments & default & definition \\ \tkzDefSpcTriangle[excentral,name=J](A,B,C){a,b,c} \tkzDefSpcTriangle[intouch,name=I](A,B,C){a,b,c} \tkzDefProjExcenter[name=J](A,B,C)(a,b,c){X,Y,Z} - \tkzDefCircle[in](A,B,C) \tkzGetPoint{I} \tkzGetSecondPoint{T} \tkzDrawCircles[red](Ja,Xa Jb,Yb Jc,Zc) \tkzDrawCircle(I,T) @@ -373,48 +244,52 @@ arguments & default & definition \\ Jb,Xb Jb,Yb Jb,Zb Jc,Xc Jc,Yc Jc,Zc I,Ia I,Ib I,Ic) -\tkzMarkRightAngles[size=.2,fill=gray!15](Ja,Za,B Ja,Xa,B Ja,Ya,C Jb,Yb,C Jb,Zb,B Jb,Xb,C Jc,Yc,A Jc,Zc,B Jc,Xc,C I,Ia,B I,Ib,C I,Ic,A) +\tkzMarkRightAngles[size=.2,fill=gray!15](Ja,Za,B Ja,Xa,B Ja,Ya,C Jb,Yb,C) +\tkzMarkRightAngles[size=.2,fill=gray!15](Jb,Zb,B Jb,Xb,C Jc,Yc,A Jc,Zc,B) Jc,Xc,C I,Ia,B I,Ib,C I,Ic,A) \tkzDrawSegments[blue](Jc,C Ja,A Jb,B) -\tkzLabelPoints(A,Yc,Ya,Yb,Ja,I,Zc) -\tkzLabelPoints[left](Jb,Ib) -\tkzLabelPoints[below](Zb,Ic,Jc,B,Za) -\tkzLabelPoints[above right](C) -\tkzLabelPoints[right](Xb,Ia,Xa,Xc) -\end{tikzpicture} +\tkzDrawPoints(A,B,C,Xa,Xb,Xc,Ja,Jb,Jc,Ia,Ib,Ic,Ya,Yb,Yc,Za,Zb,Zc) +\tkzLabelPoints(A,Ya,Yb,Ja,I) +\tkzLabelPoints[left](Jb,Ib,Yc) +\tkzLabelPoints[below](Zb,Ic,Jc,B,Za,Xa) +\tkzLabelPoints[above right](C,Zc,Yb) +\tkzLabelPoints[right](Xb,Ia,Xc) +\end{tikzpicture} +\end{tkzexample} + +\subsubsection{\tkzname{Orthogonal from}} +Orthogonal circle of given center. \tkzcname{tkzGetPoints\{z1\}\{z2\}} gives two points of the circle. -\begin{tkzexample}[code only,small] -\begin{tikzpicture}[scale=.6] -\tikzset{line style/.append style={line width=.2pt}} -\tikzset{label style/.append style={color=teal,font=\footnotesize}} -\tkzDefPoints{0/0/A,5/0/B,0.8/4/C} -\tkzDefSpcTriangle[excentral,name=J](A,B,C){a,b,c} -\tkzDefSpcTriangle[intouch,name=I](A,B,C){a,b,c} -\tkzDefProjExcenter[name=J](A,B,C)(a,b,c){X,Y,Z} +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[scale=.75] + \tkzDefPoints{0/0/O,1/0/A} + \tkzDefPoints{1.5/1.25/B,-2/-3/C} + \tkzDefCircle[orthogonal from=B](O,A) + \tkzGetPoints{z1}{z2} + \tkzDefCircle[orthogonal from=C](O,A) + \tkzGetPoints{t1}{t2} + \tkzDrawCircle(O,A) + \tkzDrawCircles[new](B,z1 C,t1) + \tkzDrawPoints(t1,t2,C) + \tkzDrawPoints(z1,z2,O,A,B) + \tkzLabelPoints[right](O,A,B,C) +\end{tikzpicture} +\end{tkzexample} -\tkzDefCircle[in](A,B,C) \tkzGetPoint{I} \tkzGetSecondPoint{T} -\tkzDrawCircles[red](Ja,Xa Jb,Yb Jc,Zc) -\tkzDrawCircle(I,T) -\tkzDrawPolygon[dashed,color=blue](Ja,Jb,Jc) -\tkzDrawLines[add=1.5 and 1.5](A,C A,B B,C) -\tkzDrawSegments(Ja,Xa Ja,Ya Ja,Za - Jb,Xb Jb,Yb Jb,Zb - Jc,Xc Jc,Yc Jc,Zc - I,Ia I,Ib I,Ic) -\tkzMarkRightAngles[size=.2,fill=gray!15](% - Ja,Za,B Ja,Xa,B - Ja,Ya,C Jb,Yb,C - Jb,Zb,B Jb,Xb,C - Jc,Yc,A Jc,Zc,B - Jc,Xc,C I,Ia,B - I,Ib,C I,Ic,A) -\tkzDrawSegments[blue](Jc,C Ja,A Jb,B) -\tkzLabelPoints(A,Yc,Ya,Yb,Ja,I,Zc) -\tkzLabelPoints[left](Jb,Ib) -\tkzLabelPoints[below](Zb,Ic,Jc,B,Za) -\tkzLabelPoints[above right](C) -\tkzLabelPoints[right](Xb,Ia,Xa,Xc) -\end{tikzpicture} +\subsubsection{\tkzname{Orthogonal through}} +Orthogonal circle passing through two given points. +\begin{tkzexample}[latex=6cm,small] +\begin{tikzpicture}[scale=1] + \tkzDefPoint(0,0){O} + \tkzDefPoint(1,0){A} + \tkzDrawCircle(O,A) + \tkzDefPoint(-1.5,-1.5){z1} + \tkzDefPoint(1.5,-1.25){z2} + \tkzDefCircle[orthogonal through=z1 and z2](O,A) + \tkzGetPoint{c} + \tkzDrawCircle[new](tkzPointResult,z1) + \tkzDrawPoints[new](O,A,z1,z2,c) + \tkzLabelPoints[right](O,A,z1,z2,c) +\end{tikzpicture} \end{tkzexample} - \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-clipping.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-clipping.tex index 342e0024ab..430c8605cc 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-clipping.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-clipping.tex @@ -114,10 +114,12 @@ This macro displays the bounding box. A rectangular frame surrounds the bounding \tkzDefPoint(3,0){A} \begin{scope} \tkzClipBB - \tkzDrawCircle[R](A,5) + \tkzDefCircle[R](A,5) \tkzGetPoint{a} + \tkzDrawCircle(A,a) \tkzShowBB[line width = 4pt,fill=teal!10,opacity=.4] \end{scope} -\tkzDrawCircle[R,red](A,4) +\tkzDefCircle[R](A,4) \tkzGetPoint{b} +\tkzDrawCircle[red](A,b) \end{tikzpicture} \end{tkzexample} %<---------------------------------------------------------------------------> @@ -219,23 +221,20 @@ options & default & definition \\ \tkzDefPointBy[symmetry=center K](B) \tkzGetPoint{M} \tkzClipPolygon(B,C,D,A) - \tkzCalcLength(M,I) \tkzGetLength{dMI} \tkzFillPolygon[color = orange](A,B,C,D) - \tkzFillCircle[R,color = yellow](M,\dMI) - \tkzFillCircle[R,color = blue!50!black](F,4) + \tkzFillCircle[color = yellow](M,I) + \tkzFillCircle[color = blue!50!black](F,D) \end{tikzpicture} \end{tkzexample} - - \subsection{Clipping a disc} -\begin{NewMacroBox}{tkzClipCircle}{\oarg{local options}\parg{A,B} or \parg{A,r}}% +\begin{NewMacroBox}{tkzClipCircle}{\oarg{local options}\parg{A,B}}% \begin{tabular}{lll}% \toprule arguments & example & explanation \\ \midrule -\TAline{\parg{A,B} or \parg{A,r}}{\parg{A,B} or \parg{A,2cm}} {AB radius or diameter } +\TAline{\parg{A,B}}{\parg{A,B}} {AB radius} \bottomrule \end{tabular} @@ -243,8 +242,6 @@ arguments & example & explanation \\ \begin{tabular}{lll}% options & default & definition \\ \midrule -\TOline{radius} {radius}{circle characterized by two points defining a radius} -\TOline{R} {radius}{circle characterized by a point and the measurement of a radius } \TOline{out} {} {allows to clip the outside of the object} \bottomrule \end{tabular} @@ -267,7 +264,6 @@ It is not necessary to put \tkzname{radius} because that is the default option. \end{tikzpicture} \end{tkzexample} - \subsection{Clip out} \begin{tkzexample}[latex=6cm,small] @@ -276,10 +272,10 @@ It is not necessary to put \tkzname{radius} because that is the default option. \tkzDefPoint(0,0){O} \tkzDefPoint(-4,-2){A} \tkzDefPoint(3,1){B} - \tkzDrawCircle[R](O,2) + \tkzDefCircle[R](O,2) \tkzGetPoint{o} \tkzDrawPoints(A,B) % to have a good bounding box \begin{scope} - \tkzClipCircle[out,R](O,2) + \tkzClipCircle[out](O,o) \tkzDrawLines(A,B) \end{scope} \end{tikzpicture} @@ -298,11 +294,8 @@ It is not necessary to put \tkzname{radius} because that is the default option. \end{tikzpicture} \end{tkzexample} - see a more complex example about clipping here : \ref{About clipping circles} - - \subsection{Clipping a sector} \tkzHandBomb\ Attention the arguments vary according to the options. \begin{NewMacroBox}{tkzClipSector}{\oarg{local options}\parg{O,\dots}\parg{\dots}}% @@ -372,7 +365,8 @@ options & arguments & example \\ \tkzDrawSector[new](O,B)(A) \begin{scope} \tkzClipSector(O,B)(A) -\tkzDrawSquare[color=teal,fill=teal!20](O,B) +\tkzDefSquare(O,B) \tkzGetPoints{B'}{O'} +\tkzDrawPolygon[color=teal,fill=teal!20](O,B,B',O') \end{scope} \tkzDrawPoints(A,B,O) \end{tikzpicture} @@ -411,25 +405,23 @@ In order to use this option, a bounding box must be defined. -- cycle} }} \end{tkzltxexample} - \subsubsection{Example with \tkzcname{tkzClipPolygon[out]}} \tkzcname{tkzClipPolygon[out]}, \tkzcname{tkzClipCircle[out]} use this option. \begin{tkzexample}[vbox,small] -\fbox{\begin{tikzpicture}[scale=1] +\begin{tikzpicture}[scale=1] \tkzInit[xmin=-5,xmax=5,ymin=-4,ymax=6] \tkzClip - \tkzDefPoints{-.5/0/P1,.5/0/P2} - \foreach \i [count=\j from 3] in {2,...,7}{% - \tkzDefShiftPoint[P\i]({45*(\i-1)}:1){P\j}} - \tkzClipPolygon[out](P1,P...,P8) - \tkzCalcLength(P1,P5)\tkzGetLength{r} - \begin{scope}[blend group=screen] - \foreach \i in {1,...,8}{% - \pgfmathparse{100-5*\i} - \tkzFillCircle[R,color=teal!% - \pgfmathresult](P\i,\r)} - \end{scope} -\end{tikzpicture}} +\tkzDefPoints{-.5/0/P1,.5/0/P2} +\foreach \i [count=\j from 3] in {2,...,7}{% + \tkzDefShiftPoint[P\i]({45*(\i-1)}:1){P\j}} +\tkzClipPolygon[out](P1,P...,P8) +\tkzCalcLength(P1,P5)\tkzGetLength{r} +\begin{scope}[blend group=screen] + \foreach \i in {1,...,8}{% + \tkzDefCircle[R](P\i,\r) \tkzGetPoint{x} + \tkzFillCircle[color=teal](P\i,x)} + \end{scope} +\end{tikzpicture} \end{tkzexample} \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-compass.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-compass.tex index 4740226622..088d39f8b0 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-compass.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-compass.tex @@ -59,6 +59,10 @@ options & default & definition \\ \end{tabular} \end{NewMacroBox} +\subsubsection{Use \tkzcname{tkzCompasss}} % (fold) +\label{ssub:use_tkzcname_tkzcompasss} + +% subsubsection use_tkzcname_tkzcompasss (end) \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.75] \tkzDefPoint(2,2){A} \tkzDefPoint(5,-2){B} diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-documentation.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-documentation.tex new file mode 100644 index 0000000000..a18455139c --- /dev/null +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-documentation.tex @@ -0,0 +1,29 @@ +\section{About this documentation and the examples} + +It is obtained by compiling with "lualatex". I use a class \tkzname{doc.cls} based on \tkzname{scrartcl}. + +Below the list of styles used in the docuimentation. To understand how to use the styles see the section \ref{custom} + +|\tkzSetUpColors[background=white,text=black] | + +|\tkzSetUpCompass[color=orange, line width=.2pt,delta=10]| + +|\tkzSetUpArc[color=gray,line width=.2pt]| + +|\tkzSetUpPoint[size=2,color=teal]| + +|\tkzSetUpLine[line width=.2pt,color=teal]| + +|\tkzSetUpStyle[color=orange,line width=.2pt]{new}| + +|\tikzset{every picture/.style={line width=.2pt}}| + +|\tikzset{label angle style/.append style={color=teal,font=\footnotesize}}| + + +|\tikzset{label style/.append style={below,color=teal,font=\scriptsize}}| + +Some examples use predefined styles like + + +|\tikzset{new/.style={color=orange,line width=.2pt}} |
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-drawing.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-drawing.tex index 8f8b72d95f..763227ddba 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-drawing.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-drawing.tex @@ -88,7 +88,6 @@ options & default & definition \\ \tkzHandBomb\ Beware of the final "s", an oversight leads to cascading errors if you try to draw multiple points. The options are the same as for the previous macro. \end{NewMacroBox} - \subsubsection{Example} \begin{tkzexample}[latex=7cm,small] @@ -97,18 +96,14 @@ options & default & definition \\ \tkzDrawPoints[size=3,color=red,fill=red!50](A,B,C) \end{tikzpicture} \end{tkzexample} - - %<----------------------------------------------------------------------------> % LINE(S) %<----------------------------------------------------------------------------> - \section{Drawing the lines} The following macros are simply used to draw, name lines. \subsection{Draw a straight line} To draw a normal straight line, just give a couple of points. You can use the \tkzname{add} option to extend the line (This option is due to \tkzimp{Mark Wibrow}, see the code below). - The style of a line is by default : \begin{tkzltxexample}[] @@ -182,11 +177,9 @@ Arguments are a list of pairs of points separated by spaces. The styles of \TI \tkzLabelPoints(A,B,C,D) \end{tikzpicture} \end{tkzexample} - %<----------------------------------------------------------------------------> % SEGMENT(S) %<----------------------------------------------------------------------------> - \section{Drawing a segment} There is, of course, a macro to simply draw a segment. @@ -230,11 +223,12 @@ This is of course equivalent to \tkzcname{draw (A)--(B);}. You can also use the \subsubsection{Example of extending an segment with option \tkzname{add}} \begin{tkzexample}[latex=7cm,small] - \begin{tikzpicture} +\begin{tikzpicture} \tkzDefPoints{0/0/A,6/0/B,0.8/4/C} \tkzDefTriangleCenter[euler](A,B,C) \tkzGetPoint{E} - \tkzDrawCircle[euler,red](A,B,C) + \tkzDefCircle[euler](A,B,C)\tkzGetPoints{E}{e} + \tkzDrawCircle[red](E,e) \tkzDrawLines[add=.5 and .5](A,B A,C B,C) \tkzDrawPoints(A,B,C,E) \tkzLabelPoints(A,B,C,E) @@ -254,7 +248,6 @@ I'll let you look at the examples to see what you can do with these styles. dim fence style/.style={dashed}] \end{verbatim} - \begin{tkzexample}[latex=7cm] \begin{tikzpicture}[scale=.75] \tkzDefPoints{0/3/A, 1/-3/B} @@ -273,7 +266,6 @@ I'll let you look at the examples to see what you can do with these styles. \end{tikzpicture} \end{tkzexample} - \subsubsection{Adding dimensions with option \tkzname{dim} partI} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=2] @@ -282,8 +274,8 @@ I'll let you look at the examples to see what you can do with these styles. \tkzDefPoint(3.07,0){B} \tkzInterCC[R](A,2.37)(B,1.82) \tkzGetPoints{C}{C'} -\tkzDrawCircle[in](A,B,C) \tkzGetPoint{G} -\tkzGetLength{rIn} +\tkzDefCircle[in](A,B,C) \tkzGetPoints{G}{g} +\tkzDrawCircle(G,g) \tkzDrawPolygon(A,B,C) \tkzDrawPoints(A,B,C) \tkzCalcLength(A,B)\tkzGetLength{ABl} @@ -307,11 +299,11 @@ I'll let you look at the examples to see what you can do with these styles. \tkzDrawPolygon(C,...,F) \tkzDrawSegments(A,B) \tkzDrawPoints(A,...,F,O) - \tkzLabelPoints(A,...,F,O) - \tkzDrawSegment[dim={ $\sqrt{5}$,2cm,}](C,E) - \tkzDrawSegment[dim={ $\frac{\sqrt{5}}{2}$,1cm,}](O,E) - \tkzDrawSegment[dim={ $2$,2cm,left=8pt}](F,C) - \tkzDrawSegment[dim={ $1$,1cm,left=8pt}](F,A) + \tkzLabelPoints[below left](A,...,F,O) + \tkzDrawSegment[dim={ $\sqrt{5}$,2cm,}](C,E) + \tkzDrawSegment[dim={ $\frac{\sqrt{5}}{2}$,1cm,}](O,E) + \tkzDrawSegment[dim={ $2$,2cm,left=8pt}](F,C) + \tkzDrawSegment[dim={ $1$,1cm,left=8pt}](F,A) \end{tikzpicture} \end{tkzexample} @@ -391,7 +383,7 @@ Just give a list of points and the macro plots the polygon using the \TIKZ\ opti arguments & example & explanation \\ \midrule \TAline{\parg{pt1,pt2,pt3,...}}{|\BS tkzDrawPolygon[gray,dashed](A,B,C)|}{Drawing a triangle} - \end{tabular} +\end{tabular} \medskip \begin{tabular}{lll}% @@ -438,7 +430,8 @@ options & default & example \\ \tkzDrawPolygon[teal!80, line join=round](p0,p2,p4) \tkzDrawSegments(m1,p3 m3,p5 m5,p1) -\tkzDrawCircle[teal,R](O,4.8) +\tkzDefCircle[R](O,4.8)\tkzGetPoint{o} +\tkzDrawCircle[teal](O,o) \end{tikzpicture} \end{tkzexample} @@ -451,7 +444,7 @@ Just give a list of points and the macro plots the polygonal chain using the \TI arguments & example & explanation \\ \midrule \TAline{\parg{pt1,pt2,pt3,...}}{|\BS tkzDrawPolySeg[gray,dashed](A,B,C)|}{Drawing a triangle} - \end{tabular} +\end{tabular} \medskip \begin{tabular}{lll}% @@ -501,35 +494,23 @@ A Sangaku look! It is a question of proving that one can inscribe in a half-disc \tkzDrawPoints(P_1,P_...,P_8) \end{tikzpicture} \end{tkzexample} - %<----------------------------------------------------------------------------> % CIRCLE %<----------------------------------------------------------------------------> - \section{Draw a circle with \tkzcname{tkzDrawCircle}} \subsection{Draw one circle} \begin{NewMacroBox}{tkzDrawCircle}{\oarg{local options}\parg{A,B}}% -\tkzHandBomb\ Attention you need only two points to define a radius or a diameter. An additional option \tkzname{R} is available to give a measure directly. +\tkzHandBomb\ Attention you need only two points to define a radius. An additional option \tkzname{R} is available to give a measure directly. \medskip \begin{tabular}{lll}% \toprule arguments & example & explanation \\ \midrule -\TAline{\parg{pt1,pt2}}{\parg{A,B}} {two points to define a radius or a diameter} -\end{tabular} - -\medskip -\begin{tabular}{lll}% -\toprule -options & default & definition \\ -\midrule -\TOline{through}{through}{circle with two points defining a radius} -\TOline{diameter}{through}{circle with two points defining a diameter} -\TOline{R}{through}{circle characterized by a point and the measurement of a radius} +\TAline{\parg{pt1,pt2}}{\parg{A,B}} {A center through B} \bottomrule -\end{tabular} +\end{tabular} \medskip Of course, you have to add all the styles of \TIKZ\ for the tracings... @@ -545,12 +526,12 @@ Of course, you have to add all the styles of \TIKZ\ for the tracings... % circle with center O and passing through A \tkzDrawCircle(O,A) % diameter circle $[OA]$ - \tkzDrawCircle[diameter,new,% - line width=.4pt,fill=orange!10,% - opacity=.5](O,A) + \tkzDefCircle[diameter](O,A) \tkzGetPoint{I} + \tkzDrawCircle[new,fill=orange!10,opacity=.5](I,A) % circle with center O and radius = exp(1) cm \edef\rayon{\fpeval{0.25*exp(1)}} - \tkzDrawCircle[R,color=orange](O,\rayon) + \tkzDefCircle[R](O,\rayon) \tkzGetPoint{o} + \tkzDrawCircle[color=orange](O,o) \end{tikzpicture} \end{tkzexample} @@ -594,18 +575,18 @@ Of course, you have to add all the styles of \TIKZ\ for the tracings... \end{tikzpicture} \end{tkzexample} - \subsubsection{Concentric circles.} +\subsubsection{Concentric circles.} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture} - \tkzDefPoint(0,0){A} - \tkzDrawCircles[R](A,1 A,2 A,3) + \tkzDefPoints{0/0/A,1/0/a,2/0/b,3/0/c} + \tkzDrawCircles(A,a A,b A,c) \tkzDrawPoint(A) \tkzLabelPoints(A) \end{tikzpicture} \end{tkzexample} - \subsubsection{Exinscribed circles.} +\subsubsection{Exinscribed circles.} \begin{tkzexample}[latex=8cm,small] \begin{tikzpicture}[scale=1] @@ -613,8 +594,7 @@ Of course, you have to add all the styles of \TIKZ\ for the tracings... \tkzDrawPolygon(A,B,C) \tkzDefCircle[ex](B,C,A) \tkzGetPoint{J_c} \tkzGetSecondPoint{T_c} -\tkzGetLength{rJc} -\tkzDrawCircle[R](J_c,{\rJc pt}) +\tkzDrawCircle(J_c,T_c) \tkzDrawLines[add=0 and 1](C,A C,B) \tkzDrawSegment(J_c,T_c) \tkzMarkRightAngle(J_c,T_c,B) @@ -648,7 +628,7 @@ Based on an idea by O. Reboux made with pst-eucl (Pstricks module) by D. Rodrigu \toprule arguments & example & explanation \\ \midrule -\TAline{\parg{pt1,pt2}}{\parg{O,A} or \parg{A,B}} {radius or diameter} +\TAline{\parg{pt1,pt2}}{\parg{O,A}} {radius} \bottomrule \end{tabular} @@ -658,7 +638,6 @@ arguments & example & explanation \\ options & default & definition \\ \midrule \TOline{through} {through}{circle characterized by two points defining a radius} -\TOline{diameter} {through}{circle characterized by two points defining a diameter} \end{tabular} \end{NewMacroBox} @@ -680,7 +659,6 @@ options & default & definition \\ \tkzDrawCircle(M,I) \tkzCalcLength(M,I) \tkzGetLength{dMI} \tkzDrawPolygon(A,B,C,D) - \tkzDrawCircle[R](M,\dMI) \tkzDrawSemiCircle(F,D) \end{tikzpicture} \end{tkzexample} @@ -704,16 +682,14 @@ arguments & example & explanation \\ options & default & definition \\ \midrule \TOline{through}{through}{circle with two points defining a radius} -\TOline{diameter}{through}{circle with two points defining a diameter} \bottomrule \end{tabular} \end{NewMacroBox} - %<----------------------------------------------------------------------------> % ARC %<----------------------------------------------------------------------------> - \section{Drawing arcs} +\subsection{Macro: \tkzcname{tkzDrawArc} } \begin{NewMacroBox}{tkzDrawArc}{\oarg{local options}\parg{O,\dots}\parg{\dots}}% This macro traces the arc of center $O$. Depending on the options, the arguments differ. It is a question of determining a starting point and an end point. Either the starting point is given, which is the simplest, or the radius of the arc is given. In the latter case, it is necessary to have two angles. Either the angles can be given directly, or nodes associated with the center can be given to determine them. The angles are in degrees. @@ -727,7 +703,8 @@ options & default & definition \\ \TOline{R}{towards}{We give the radius and two angles} \TOline{R with nodes}{towards}{We give the radius and two points} \TOline{angles}{towards}{We give the radius and two points} -\TOline{delta}{0}{angle added on each side } +\TOline{delta}{0}{angle added on each side } +\TOline{reverse}{false}{inversion of the arc's path, interesting to inverse arrow} \bottomrule \end{tabular} @@ -750,7 +727,7 @@ options & arguments & example \\ Here are a few examples: -\subsection{Option \tkzname{towards}} +\subsubsection{Option \tkzname{towards}} It's useless to put \tkzname{towards}. In this first example the arc starts from $A$ and goes to $B$. The arc going from $B$ to $A$ is different. The salient is obtained by going in the direct direction of the trigonometric circle. \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.75] @@ -766,7 +743,7 @@ It's useless to put \tkzname{towards}. In this first example the arc starts from \end{tikzpicture} \end{tkzexample} -\subsection{Option \tkzname{towards}} +\subsubsection{Option \tkzname{towards}} In this one, the arc starts from A but stops on the right (OB). \begin{tkzexample}[latex=6cm,small] @@ -783,7 +760,7 @@ In this one, the arc starts from A but stops on the right (OB). \end{tikzpicture} \end{tkzexample} -\subsection{Option \tkzname{rotate}} +\subsubsection{Option \tkzname{rotate}} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=0.75] \tkzDefPoint(0,0){O} @@ -796,7 +773,7 @@ In this one, the arc starts from A but stops on the right (OB). \end{tikzpicture} \end{tkzexample} -\subsection{Option \tkzname{R}} +\subsubsection{Option \tkzname{R}} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=0.75] \tkzDefPoints{0/0/O} @@ -808,7 +785,7 @@ In this one, the arc starts from A but stops on the right (OB). \end{tikzpicture} \end{tkzexample} -\subsection{Option \tkzname{R with nodes}} +\subsubsection{Option \tkzname{R with nodes}} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=0.75] \tkzDefPoint(0,0){O} @@ -819,7 +796,7 @@ In this one, the arc starts from A but stops on the right (OB). \end{tikzpicture} \end{tkzexample} -\subsection{Option \tkzname{delta}} +\subsubsection{Option \tkzname{delta}} This option allows a bit like \tkzcname{tkzCompass} to place an arc and overflow on either side. delta is a measure in degrees. \begin{tkzexample}[latex=7cm,small] @@ -840,12 +817,12 @@ This option allows a bit like \tkzcname{tkzCompass} to place an arc and overflow \end{scope} \tkzDrawPoints(A,B,C,D) - \tkzLabelPoints(A,B,C,D) + \tkzLabelPoints[below right](A,B,C,D) \tkzMarkRightAngle(D,B,A) \end{tikzpicture} \end{tkzexample} -\subsection{Option \tkzname{angles}: example 1} +\subsubsection{Option \tkzname{angles}: example 1} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.75] @@ -863,12 +840,12 @@ This option allows a bit like \tkzcname{tkzCompass} to place an arc and overflow \tkzDrawLines(A,B O,E B,E) \tkzDrawPoints(A,B,O,D,E) \end{scope} - \tkzLabelPoints(A,B,O,D,E) + \tkzLabelPoints[below right](A,B,O,D,E) \tkzMarkRightAngle(O,B,E) \end{tikzpicture} \end{tkzexample} -\subsection{Option \tkzname{angles}: example 2} +\subsubsection{Option \tkzname{angles}: example 2} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture} @@ -889,28 +866,40 @@ This option allows a bit like \tkzcname{tkzCompass} to place an arc and overflow \end{tikzpicture} \end{tkzexample} +\subsubsection{Option \tkzname{reverse}: inversion of the arrow} + +\begin{tkzexample}[latex=6cm,small] + \begin{tikzpicture} + \tkzDefPoints{0/0/O,3/0/U} + \tkzDefPoint(10:1){A} + \tkzDefPoint(90:1){B} + \tkzLabelPoints(A,B) + \tkzDrawArc[reverse,tkz arrow={Stealth}](O,A)(B) + \tkzDrawPoints(A,B,O) + \end{tikzpicture} +\end{tkzexample} %<----------------------------------------------------------------------------> % SECTOR %<----------------------------------------------------------------------------> - \section{Drawing a sector or sectors} \subsection{\tkzcname{tkzDrawSector}} \tkzHandBomb\ Attention the arguments vary according to the options. \begin{NewMacroBox}{tkzDrawSector}{\oarg{local options}\parg{O,\dots}\parg{\dots}}% -\begin{tabular}{lll}% +\begin{tabular}{SlSlSl}% options & default & definition \\ \midrule \TOline{towards}{towards}{$O$ is the center and the arc from $A$ to $(OB)$} \TOline{rotate} {towards}{the arc starts from $A$ and the angle determines its length } \TOline{R}{towards}{We give the radius and two angles} \TOline{R with nodes}{towards}{We give the radius and two points} -\bottomrule + \end{tabular} -You have to add, of course, all the styles of \TIKZ\ for tracings... +\medskip +\emph{You have to add, of course, all the styles of \TIKZ\ for tracings...} \begin{tabular}{lll}% -\toprule + options & arguments & example \\ \midrule \TOline{towards}{\parg{pt,pt}\parg{pt}}{\tkzcname{tkzDrawSector(O,A)(B)}} diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-elements.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-elements.tex index ba1dbc6e07..4d01262ccb 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-elements.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-elements.tex @@ -1,4 +1,3 @@ - \section{The Elements of tkz code} To work with my package, you need to have notions of \LATEX\ as well as \TIKZ. @@ -15,13 +14,8 @@ The used points are passed as parameters between parentheses while the created p The code of the figures is placed in an environment \tkzimp{tikzpicture} -\begin{tkzltxexample}[] - \begin{tikzpicture} - code ... - \end{tikzpicture} - \end{tkzltxexample} - - Contrary to \TIKZ, you should not end a macro with ";". We thus lose the important notion which is the \tkzimp{path}. However, it is possible to place some code between the macros \tkzname{\tkznameofpack}. + +Contrary to \TIKZ, you should not end a macro with ";". We thus lose the important notion which is the \tkzimp{path}. However, it is possible to place some code between the macros \tkzname{\tkznameofpack}. Among the first category, |\tkzDefPoint| allows you to define fixed points. It will be studied in detail later. Here we will see in detail the macro |\tkzDefTriangle|. @@ -36,12 +30,10 @@ In order to choose a certain type of triangle among the following choices: |equilateral|, |isosceles right|, |half|, |pythagoras|, |school|, |golden or sublime|, |euclid|, |gold|, |cheops|... and |two angles| you just have to choose between hooks, for example: - - \begin{minipage}{0.5\textwidth} \begin{tikzpicture}[scale=.5] \tkzDefPoints{0/0/A,8/0/B} - \foreach \tr in {euclid, gold} + \foreach \tr in {golden, equilateral} {\tkzDefTriangle[\tr](A,B) \tkzGetPoint{C} \tkzDrawPoint(C) \tkzLabelPoint[right](C){\tr} @@ -55,7 +47,7 @@ In order to choose a certain type of triangle among the following choices: \begin{tkzexample}[code only,small] \begin{tikzpicture}[scale=.5] \tkzDefPoints{0/0/A,8/0/B} - \foreach \tr in {euclid,gold} + \foreach \tr in {golden, equilateral} {\tkzDefTriangle[\tr](A,B) \tkzGetPoint{C} \tkzDrawPoint(C) \tkzLabelPoint[right](C){\tr} @@ -67,7 +59,6 @@ In order to choose a certain type of triangle among the following choices: \end{tkzexample} \end{minipage} - \subsection{Notations and conventions} I deliberately chose to use the geometric French and personal conventions to describe the geometric objects represented. The objects defined and represented by \tkzname{\tkznameofpack} are points, lines and circles located in a plane. They are the primary objects of Euclidean geometry from which we will construct figures. @@ -77,7 +68,6 @@ Thus a point has no dimension and therefore no real existence. In the same way t Here are the notations that will be used: - \begin{itemize} \item The points are represented geometrically either by a small disc or by the intersection of two lines (two straight lines, a straight line and a circle or two circles). In this case, the point is represented by a cross. @@ -130,7 +120,6 @@ Another exception relates to intermediate construction points which will not be \item The semi-straight line is designated as follows $[AB)$. - \item Relation between the straight lines. Two perpendicular $(AB)$ and $(CD)$ lines will be written $(AB) \perp (CD)$ and if they are parallel we will write $(AB) \parallelslant (CD)$. \item The lengths of the sides of triangle ABC are $AB$, $AC$ and $BC$. The numbers are also designated by a lowercase letter so we will write: $AB=c$, $AC=b$ and $BC=a$. The letter $a$ is also used to represent an angle, and $r$ is frequently used to represent a radius, $d$ a diameter, $l$ a length, $d$ a distance. @@ -141,16 +130,13 @@ Another exception relates to intermediate construction points which will not be \item The arcs are designated by their extremities. For example if $A$ and $B$ are two points of the same circle then $\widearc{AB}$. - \item Circles are noted either $\mathcal{C}$ if there is no possible confusion or $\mathcal{C}$ $(O~;~A)$ for a circle with center $O$ and passing through the point $A$ or $\mathcal{C}$ $(O~;~1)$ for a circle with center O and radius 1 cm. \item Name of the particular lines of a triangle: I used the terms bisector, bisector out, mediator (sometimes called perpendicular bisectors), altitude, median and symmedian. \item ($x_1$,$y_1$) coordinates of the point $A_1$, ($x_A$,$y_A$) coordinates of the point $A$. - \end{itemize} - \subsection{\tkzname{Set, Calculate, Draw, Mark, Label}} The title could have been: \texttt{Separation of Calculus and Drawings} diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-examples.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-examples.tex index 2447e1f842..1a64516c84 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-examples.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-examples.tex @@ -1,4 +1,3 @@ - \section{Some interesting examples} \subsection{Square root of the integers} @@ -87,10 +86,10 @@ The figure below shows a semicircle, with diameter $AB$. A tangent line is drawn \begin{tikzpicture} \node [mybox,title={Book II, proposition XI \_Euclid's Elements\_}] (box){% - \begin{minipage}{0.90\textwidth} +\begin{minipage}{0.90\textwidth} {\emph{To construct Square and rectangle of same area.} } - \end{minipage} +\end{minipage} }; \end{tikzpicture}% @@ -110,7 +109,8 @@ The figure below shows a semicircle, with diameter $AB$. A tangent line is drawn \tkzDrawSegments(A,F E,B H,I F,H) \tkzDrawPolygons(A,B,C,D) \tkzDrawPoints(A,...,I) - \tkzLabelPoints(A,...,I) + \tkzLabelPoints[below right](A,E,D,F,I) + \tkzLabelPoints[above right](C,B,G,H) \end{tikzpicture} \end{tkzexample} @@ -120,7 +120,7 @@ The figure below shows a semicircle, with diameter $AB$. A tangent line is drawn \begin{tikzpicture} \node [mybox,title={Steiner Line and Simson Line}] (box){% - \begin{minipage}{0.90\textwidth} +\begin{minipage}{0.90\textwidth} {\emph{Consider the triangle ABC and a point M on its circumcircle. The projections of M on the sides of the triangle are on a line (Steiner Line), The three closest points to M on lines AB, AC, and BC are collinear. It's the Simson Line. }} \end{minipage} @@ -153,10 +153,8 @@ The figure below shows a semicircle, with diameter $AB$. A tangent line is drawn \tkzDrawPoints(A,B,C,H,M,N,P,Q,R,P',Q',R',I,J,K) \tkzLabelPoints(A,B,C,H,M,N,P,Q,R,P',Q',R',I,J,K) \end{tikzpicture} - \end{tkzexample} - \newpage \subsection{Lune of Hippocrates} @@ -180,7 +178,8 @@ The figure below shows a semicircle, with diameter $AB$. A tangent line is drawn \tkzDrawPolygon[fill=green!5](A,B,C) \begin{scope} \tkzClipCircle[out](B,A) - \tkzDrawSemiCircle[diameter,fill=teal!5](A,C) + \tkzDefMidPoint(C,A) \tkzGetPoint{M} + \tkzDrawSemiCircle[fill=teal!5](M,C) \end{scope} \tkzDrawArc[delta=0](B,C)(A) \end{tikzpicture} @@ -207,11 +206,14 @@ The figure below shows a semicircle, with diameter $AB$. A tangent line is drawn \tkzDefMidPoint(C,A) \tkzGetPoint{I} \begin{scope} \tkzClipCircle[out](I,A) - \tkzDrawSemiCircle[diameter,fill=teal!5](B,A) - \tkzDrawSemiCircle[diameter,fill=teal!5](C,B) + \tkzDefMidPoint(B,A) \tkzGetPoint{x} + \tkzDrawSemiCircle[fill=teal!5](x,A) + \tkzDefMidPoint(B,C) \tkzGetPoint{y} + \tkzDrawSemiCircle[fill=teal!5](y,B) \end{scope} \tkzSetUpCompass[/tkzcompass/delta=0] - \tkzDrawSemiCircle[diameter](C,A) + \tkzDefMidPoint(C,A) \tkzGetPoint{z} + \tkzDrawSemiCircle(z,A) \end{tikzpicture} \end{tkzexample} @@ -265,9 +267,6 @@ The figure below shows a semicircle, with diameter $AB$. A tangent line is drawn \end{tikzpicture} \end{tkzexample} - - - \newpage \subsection{Similar isosceles triangles} @@ -281,8 +280,6 @@ The figure below shows a semicircle, with diameter $AB$. A tangent line is drawn }; \end{tikzpicture}% - - The following is from the excellent site \textbf{Descartes et les Mathématiques}. I did not modify the text and I am only the author of the programming of the figures. \url{http://debart.pagesperso-orange.fr/seconde/triangle.html} @@ -290,13 +287,10 @@ The following is from the excellent site \textbf{Descartes et les Mathématiques Bibliography: \begin{itemize} - \item Géométrie au Bac - Tangente, special issue no. 8 - Exercise 11, page 11 - \item Elisabeth Busser and Gilles Cohen: 200 nouveaux problèmes du "Monde" - POLE 2007 (200 new problems of "Le Monde") - \item Affaire de logique n° 364 - Le Monde February 17, 2004 \end{itemize} @@ -313,7 +307,7 @@ At what angle does he see these two vertices?} \vspace*{2cm} The constructions and their associated codes are on the next two pages, but you can search before looking. The programming respects (it seems to me ...) my reasoning in both cases. - \subsection{Revised version of "Tangente"} +\subsection{Revised version of "Tangente"} \begin{tkzexample}[] \begin{tikzpicture}[scale=.8,rotate=60] \tkzDefPoint(6,0){X} \tkzDefPoint(3,3){Y} @@ -391,7 +385,8 @@ The three altitudes of a triangle intersect at the same H-point. \tkzDrawSegments[color=orange](B,B' C,C' A,A') \tkzMarkRightAngles(C,B',B B,C',C C,A',A) \tkzDrawPoints(A,B,C,A',B',C',H) - \tkzLabelPoints(A,B,C,A',B',C',H) + \tkzLabelPoints[above right](A,B',C',H) + \tkzLabelPoints[below right](B,C,A') \end{tikzpicture} \end{tkzexample} @@ -408,7 +403,9 @@ The three altitudes of a triangle intersect at the same H-point. \tkzInterLC(C,B)(O,A) \tkzGetSecondPoint{N} \tkzInterLL(B,M)(A,N)\tkzGetPoint{I} -\tkzDrawCircles[diameter](A,B I,C) +\tkzDefCircle[diameter](A,B)\tkzGetPoint{x} +\tkzDefCircle[diameter](I,C)\tkzGetPoint{y} +\tkzDrawCircles(x,A y,C) \tkzDrawSegments(C,A C,B A,B B,M A,N) \tkzMarkRightAngles[fill=brown!20](A,M,B A,N,B A,P,C) \tkzDrawSegment[style=dashed,color=orange](C,P) @@ -422,7 +419,6 @@ The three altitudes of a triangle intersect at the same H-point. \end{tikzpicture} \end{tkzexample} - \newpage \subsection{Three circles in an Equilateral Triangle } \begin{tikzpicture} @@ -496,7 +492,6 @@ The three altitudes of a triangle intersect at the same H-point. \end{tikzpicture} \end{tkzexample} - In the triangle $ABC$ \begin{equation} @@ -526,33 +521,33 @@ One of the beautiful arrangements of circles found at the Temple of Osiris at Ab Weisstein, Eric W. "Flower of Life." From MathWorld--A Wolfram Web Resource.\\ \url{http://mathworld.wolfram.com/FlowerofLife.html} \begin{tkzexample}[vbox,small] - \begin{tikzpicture}[scale=.75] - \tkzSetUpLine[line width=2pt,color=teal!80!black] - \tkzSetUpCompass[line width=2pt,color=teal!80!black] - \tkzDefPoint(0,0){O} \tkzDefPoint(2.25,0){A} - \tkzDrawCircle(O,A) - \foreach \i in {0,...,5}{ - \tkzDefPointBy[rotation= center O angle 30+60*\i](A)\tkzGetPoint{a\i} - \tkzDefPointBy[rotation= center {a\i} angle 120](O)\tkzGetPoint{b\i} - \tkzDefPointBy[rotation= center {a\i} angle 180](O)\tkzGetPoint{c\i} - \tkzDefPointBy[rotation= center {c\i} angle 120](a\i)\tkzGetPoint{d\i} - \tkzDefPointBy[rotation= center {c\i} angle 60](d\i)\tkzGetPoint{f\i} - \tkzDefPointBy[rotation= center {d\i} angle 60](b\i)\tkzGetPoint{e\i} - \tkzDefPointBy[rotation= center {f\i} angle 60](d\i)\tkzGetPoint{g\i} - \tkzDefPointBy[rotation= center {d\i} angle 60](e\i)\tkzGetPoint{h\i} - \tkzDefPointBy[rotation= center {e\i} angle 180](b\i)\tkzGetPoint{k\i} - \tkzDrawCircle(a\i,O) - \tkzDrawCircle(b\i,a\i) - \tkzDrawCircle(c\i,a\i) - \tkzDrawArc[rotate](f\i,d\i)(-120) - \tkzDrawArc[rotate](e\i,d\i)(180) - \tkzDrawArc[rotate](d\i,f\i)(180) - \tkzDrawArc[rotate](g\i,f\i)(60) - \tkzDrawArc[rotate](h\i,d\i)(60) - \tkzDrawArc[rotate](k\i,e\i)(60) - } - \tkzClipCircle(O,f0) - \end{tikzpicture} +\begin{tikzpicture}[scale=.75] + \tkzSetUpLine[line width=2pt,color=teal!80!black] + \tkzSetUpCompass[line width=2pt,color=teal!80!black] + \tkzDefPoint(0,0){O} \tkzDefPoint(2.25,0){A} + \tkzDrawCircle(O,A) +\foreach \i in {0,...,5}{ + \tkzDefPointBy[rotation= center O angle 30+60*\i](A)\tkzGetPoint{a\i} + \tkzDefPointBy[rotation= center {a\i} angle 120](O)\tkzGetPoint{b\i} + \tkzDefPointBy[rotation= center {a\i} angle 180](O)\tkzGetPoint{c\i} + \tkzDefPointBy[rotation= center {c\i} angle 120](a\i)\tkzGetPoint{d\i} + \tkzDefPointBy[rotation= center {c\i} angle 60](d\i)\tkzGetPoint{f\i} + \tkzDefPointBy[rotation= center {d\i} angle 60](b\i)\tkzGetPoint{e\i} + \tkzDefPointBy[rotation= center {f\i} angle 60](d\i)\tkzGetPoint{g\i} + \tkzDefPointBy[rotation= center {d\i} angle 60](e\i)\tkzGetPoint{h\i} + \tkzDefPointBy[rotation= center {e\i} angle 180](b\i)\tkzGetPoint{k\i} + \tkzDrawCircle(a\i,O) + \tkzDrawCircle(b\i,a\i) + \tkzDrawCircle(c\i,a\i) + \tkzDrawArc[rotate](f\i,d\i)(-120) + \tkzDrawArc[rotate](e\i,d\i)(180) + \tkzDrawArc[rotate](d\i,f\i)(180) + \tkzDrawArc[rotate](g\i,f\i)(60) + \tkzDrawArc[rotate](h\i,d\i)(60) + \tkzDrawArc[rotate](k\i,e\i)(60) +} + \tkzClipCircle(O,f0) +\end{tikzpicture} \end{tkzexample} @@ -567,52 +562,32 @@ Weisstein, Eric W. "Flower of Life." From MathWorld--A Wolfram Web Resource.\\ \ }; \end{tikzpicture}% -\begin{tkzexample}[code only, small] -\begin{tikzpicture} - \tkzDefPoint(0,0){O} \tkzDefPoint(5,0){A} - \tkzDefPoint(0,5){B} \tkzDefPoint(-5,0){C} - \tkzDefPoint(0,-5){D} - \tkzDefMidPoint(A,O) \tkzGetPoint{I} - \tkzInterLC(I,B)(I,A) \tkzGetPoints{F}{E} - \tkzInterCC(O,C)(B,E) \tkzGetPoints{D3}{D2} - \tkzInterCC(O,C)(B,F) \tkzGetPoints{D4}{D1} - \tkzDrawArc[angles](B,E)(180,360) - \tkzDrawArc[angles](B,F)(220,340) - \tkzDrawLine[add=.5 and .5](B,I) - \tkzDrawCircle(O,A) - \tkzDrawCircle[diameter](O,A) - \tkzDrawSegments(B,D C,A) - \tkzDrawPolygon[new](D,D1,D2,D3,D4) - \tkzDrawPoints(A,...,D,O) - \tkzDrawPoints[new](E,F,I,D1,D2,D4,D3) - \tkzLabelPoints(A,...,D,O) - \tkzLabelPoints[new](I,E,F,D1,D2,D4,D3) - \end{tikzpicture} -\end{tkzexample} - +\begin{tkzexample}[vbox,small] \begin{tikzpicture}[scale=.75] \tkzDefPoint(0,0){O} \tkzDefPoint(5,0){A} \tkzDefPoint(0,5){B} \tkzDefPoint(-5,0){C} \tkzDefPoint(0,-5){D} - \tkzDefMidPoint(A,O) \tkzGetPoint{I} - \tkzInterLC(I,B)(I,A) \tkzGetPoints{F}{E} - \tkzInterCC(O,C)(B,E) \tkzGetPoints{D3}{D2} - \tkzInterCC(O,C)(B,F) \tkzGetPoints{D4}{D1} + \tkzDefMidPoint(A,O) \tkzGetPoint{I} + \tkzInterLC(I,B)(I,A) \tkzGetPoints{F}{E} + \tkzInterCC(O,C)(B,E) \tkzGetPoints{D3}{D2} + \tkzInterCC(O,C)(B,F) \tkzGetPoints{D4}{D1} \tkzDrawArc[angles](B,E)(180,360) \tkzDrawArc[angles](B,F)(220,340) \tkzDrawLine[add=.5 and .5](B,I) \tkzDrawCircle(O,A) - \tkzDrawCircle[diameter](O,A) + \tkzDefCircle[diameter](O,A) \tkzGetPoint{x} + \tkzDrawCircle(x,A) \tkzDrawSegments(B,D C,A) \tkzDrawPolygon[new](D,D1,D2,D3,D4) \tkzDrawPoints(A,...,D,O) \tkzDrawPoints[new](E,F,I,D1,D2,D4,D3) - \tkzLabelPoints(A,...,D,O) - \tkzLabelPoints[new](I,E,F,D1,D2,D4,D3) + \tkzLabelPoints[below left](A,...,D,O) + \tkzLabelPoints[new,below right](I,E,F,D1,D2,D4,D3) \end{tikzpicture} - +\end{tkzexample} + \newpage \subsection{Pentagon in a square} \begin{tikzpicture} @@ -624,41 +599,14 @@ Weisstein, Eric W. "Flower of Life." From MathWorld--A Wolfram Web Resource.\\ \ }; \end{tikzpicture}% -\begin{tkzexample}[code only, small] - \begin{tikzpicture} - \tkzDefPoint(-5,-5){A} \tkzDefPoint(0,0){O} - \tkzDefPoint(+5,-5){B} \tkzDefPoint(0,-5){F} - \tkzDefPoint(+5,0){F'} \tkzDefPoint(0,+5){E} \tkzDefPoint(-5,0){K} - \tkzDefSquare(A,B) \tkzGetPoints{C}{D} - \tkzInterLC(D,C)(E,B) \tkzGetSecondPoint{T} - \tkzDefMidPoint(D,T) \tkzGetPoint{I} - \tkzInterCC[with nodes](O,D,I)(E,D,I) \tkzGetSecondPoint{H} - \tkzInterLC(O,H)(O,E) \tkzGetSecondPoint{M} - \tkzInterCC(O,E)(E,M) \tkzGetFirstPoint{Q} - \tkzInterCC[with nodes](O,O,E)(Q,E,M) \tkzGetFirstPoint{P} - \tkzInterCC[with nodes](O,O,E)(P,E,M) \tkzGetFirstPoint{N} - \tkzCompass(O,H) - \tkzCompass(E,H) - \tkzDrawArc(E,B)(T) - \tkzDrawPolygon(A,B,C,D) - \tkzDrawCircle(O,E) - \tkzDrawSegments[new](T,I O,H E,H E,F F',K) - \tkzDrawPoints(T,M,Q,P,N,I) - \tkzDrawPolygon[new](M,E,Q,P,N) - \tkzLabelPoints(A,B,O,N,P,Q,M,H) - \tkzLabelPoints[above right](C,D,E,I,T) -\end{tikzpicture} -\end{tkzexample} - - \begin{tikzpicture}[scale=.5] - \tkzDefPoint(-5,-5){A} - \tkzDefPoint(0,0){O} - \tkzDefPoint(+5,-5){B} - \tkzDefPoint(0,-5){F} - \tkzDefPoint(+5,0){F'} - \tkzDefPoint(0,+5){E} - \tkzDefPoint(-5,0){K} - \tkzDefSquare(A,B) \tkzGetPoints{C}{D} +\begin{tkzexample}[vbox,small] +\begin{tikzpicture}[scale=.75] + \tkzDefPoints{0/0/O,-5/-5/A,5/-5/B} + \tkzDefSquare(A,B) \tkzGetPoints{C}{D} + \tkzDefMidPoint(A,B) \tkzGetPoint{F} + \tkzDefMidPoint(C,D) \tkzGetPoint{E} + \tkzDefMidPoint(B,C) \tkzGetPoint{G} + \tkzDefMidPoint(A,D) \tkzGetPoint{K} \tkzInterLC(D,C)(E,B) \tkzGetSecondPoint{T} \tkzDefMidPoint(D,T) \tkzGetPoint{I} \tkzInterCC[with nodes](O,D,I)(E,D,I) \tkzGetSecondPoint{H} @@ -666,18 +614,16 @@ Weisstein, Eric W. "Flower of Life." From MathWorld--A Wolfram Web Resource.\\ \ \tkzInterCC(O,E)(E,M) \tkzGetFirstPoint{Q} \tkzInterCC[with nodes](O,O,E)(Q,E,M) \tkzGetFirstPoint{P} \tkzInterCC[with nodes](O,O,E)(P,E,M) \tkzGetFirstPoint{N} - \tkzCompass(O,H) - \tkzCompass(E,H) + \tkzCompasss(O,H E,H) \tkzDrawArc(E,B)(T) - \tkzDrawPolygon(A,B,C,D) + \tkzDrawPolygons[purple](A,B,C,D M,E,Q,P,N) \tkzDrawCircle(O,E) - \tkzDrawSegments(T,I O,H E,H) - \tkzDrawSegments(E,F F',K) + \tkzDrawSegments(T,I O,H E,H E,F G,K) \tkzDrawPoints(T,M,Q,P,N,I) - \tkzDrawPolygon[color=purple](M,E,Q,P,N) \tkzLabelPoints(A,B,O,N,P,Q,M,H) \tkzLabelPoints[above right](C,D,E,I,T) \end{tikzpicture} +\end{tkzexample} \newpage \subsection{Hexagon Inscribed} @@ -690,7 +636,8 @@ Weisstein, Eric W. "Flower of Life." From MathWorld--A Wolfram Web Resource.\\ \ }; \end{tikzpicture}% - +\subsubsection{Hexagon Inscribed version 1} % (fold) +\label{ssub:hexagon_inscribed_version_1} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.5] \pgfmathsetmacro{\c}{6} @@ -708,8 +655,10 @@ Weisstein, Eric W. "Flower of Life." From MathWorld--A Wolfram Web Resource.\\ \ \tkzDrawPolygon[red,thick](a2,a1,b2,b1,c2,c1) \end{tikzpicture} \end{tkzexample} +% subsubsection hexagon_inscribed_version_1 (end) -Another solution +\subsubsection{Hexagon Inscribed version 2} % (fold) +\label{ssub:hexagon_inscribed_version_2} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.5] \pgfmathsetmacro{\c}{6} @@ -723,6 +672,7 @@ Another solution \tkzDrawPolygon[fill=purple!20,opacity=.5](a,b,c) \end{tikzpicture} \end{tkzexample} +% subsubsection hexagon_inscribed_version_2 (end) \newpage \subsection{Power of a point with respect to a circle} @@ -734,6 +684,7 @@ Another solution \end{minipage} }; \end{tikzpicture}% + \begin{tkzexample}[vbox,small] \begin{tikzpicture} \pgfmathsetmacro{\r}{2}% @@ -765,12 +716,16 @@ Another solution }; \end{tikzpicture}% +\begin{tkzexample}[vbox,small] \begin{tikzpicture} \tkzDefPoints{0/0/A,4/2/B,2/3/K} -\tkzDrawCircle[R](A,1)\tkzDrawCircle[R](B,2) -\tkzDrawCircle[R,dashed,new](K,3) -\tkzInterCC[R](A,1)(K,3) \tkzGetPoints{a}{a'} -\tkzInterCC[R](B,2)(K,3) \tkzGetPoints{b}{b'} +\tkzDefCircle[R](A,1)\tkzGetPoint{a} +\tkzDefCircle[R](B,2)\tkzGetPoint{b} +\tkzDefCircle[R](K,3)\tkzGetPoint{k} +\tkzDrawCircles(A,a B,b) +\tkzDrawCircle[dashed,new](K,k) +\tkzInterCC(A,a)(K,k) \tkzGetPoints{a}{a'} +\tkzInterCC(B,b)(K,k) \tkzGetPoints{b}{b'} \tkzDrawLines[new,add=2 and 2](a,a') \tkzDrawLines[new,add=1 and 1](b,b') \tkzInterLL(a,a')(b,b') \tkzGetPoint{X} @@ -780,23 +735,6 @@ Another solution \tkzDrawLine[add= 1 and 2,new](X,H) \tkzLabelPoints(A,B,H,X,a,b,a',b') \end{tikzpicture} - -\begin{tkzexample}[code only,small] - \begin{tikzpicture} - \tkzDefPoints{0/0/A,4/2/B,2/3/K} - \tkzInterCC[R](A,1)(K,3) \tkzGetPoints{a}{a'} - \tkzInterCC[R](B,2)(K,3) \tkzGetPoints{b}{b'} - \tkzDrawLines[color=red,add=2 and 2](a,a') - \tkzDrawLines[color=red,add=1 and 1](b,b') - \tkzInterLL(a,a')(b,b') \tkzGetPoint{X} - \tkzDefPointBy[projection= onto A--B](X) \tkzGetPoint{H} - \tkzDrawCircle[R](A,1)\tkzDrawCircle[R](B,2) - \tkzDrawCircle[R,dashed,orange](K,3) - \tkzDrawPoints(A,B,H,X,a,b,a',b') - \tkzDrawLine(A,B) - \tkzDrawLine[add= 1 and 2](X,H) - \tkzLabelPoints(A,B,H,X,a,b,a',b') - \end{tikzpicture} \end{tkzexample} \newpage @@ -810,37 +748,23 @@ Another solution }; \end{tikzpicture}% +\begin{tkzexample}[vbox,small] \begin{tikzpicture} \tkzDefPoints{0/0/A,4/2/B,2/3/K} -\tkzDrawCircle[R](A,1)\tkzDrawCircle[R](B,2) +\tkzDefCircle[R](A,1)\tkzGetPoint{a} +\tkzDefCircle[R](B,2)\tkzGetPoint{b} +\tkzDrawCircles(A,a B,b) \tkzDrawLine(A,B) \tkzDefShiftPoint[A](60:1){M} \tkzDefShiftPoint[B](60:2){M'} \tkzInterLL(A,B)(M,M') \tkzGetPoint{O} -\tkzDefTangent[from = O](B,M') \tkzGetPoints{X}{T'} -\tkzDefTangent[from = O](A,M) \tkzGetPoints{X}{T} +\tkzDefLine[tangent from = O](B,M') \tkzGetPoints{X}{T'} +\tkzDefLine[tangent from = O](A,M) \tkzGetPoints{X}{T} \tkzDrawPoints(A,B,O,T,T',M,M') \tkzDrawLines[new](O,B O,T' O,M') \tkzDrawSegments[new](A,M B,M') \tkzLabelPoints(A,B,O,T,T',M,M') \end{tikzpicture} - - -\begin{tkzexample}[code only,small] - \begin{tikzpicture} - \tkzDefPoints{0/0/A,4/2/B,2/3/K} - \tkzDefShiftPoint[A](60:1){M} - \tkzDefShiftPoint[B](60:2){M'} - \tkzInterLL(A,B)(M,M') \tkzGetPoint{O} - \tkzDefTangent[from = O](B,M') \tkzGetPoints{X}{T'} - \tkzDefTangent[from = O](A,M) \tkzGetPoints{X}{T} - \tkzDrawCircle[R](A,1)\tkzDrawCircle[R](B,2) - \tkzDrawLine(A,B) - \tkzDrawPoints(A,B,O,T,T',M,M') - \tkzDrawLines[new](O,B O,T' O,M') - \tkzDrawSegments[new](A,M B,M') - \tkzLabelPoints(A,B,O,T,T',M,M') - \end{tikzpicture} \end{tkzexample} \newpage @@ -854,6 +778,7 @@ Another solution }; \end{tikzpicture}% +\begin{tkzexample}[vbox,small] \begin{tikzpicture} \pgfmathsetmacro{\r}{1}% \pgfmathsetmacro{\R}{2}% @@ -863,37 +788,20 @@ Another solution \tkzInterLC[R](A,B)(B,\rt) \tkzGetPoints{E}{F} \tkzInterCC(I,B)(B,F) \tkzGetPoints{a}{a'} \tkzInterLC[R](B,a)(B,\R) \tkzGetPoints{X'}{T'} - \tkzDefTangent[at=T'](B) \tkzGetPoint{h} + \tkzDefLine[tangent at=T'](B) \tkzGetPoint{h} \tkzInterLL(T',h)(A,B) \tkzGetPoint{O} \tkzInterLC[R](O,T')(A,\r) \tkzGetPoints{T}{T} - \tkzDrawCircle[R](A,\r) \tkzDrawCircle[R](B,\R) - \tkzDrawCircle[R,orange](B,\rt) \tkzDrawCircle[orange,dashed](I,B) + \tkzDefCircle[R](A,\r) \tkzGetPoint{a} + \tkzDefCircle[R](B,\R) \tkzGetPoint{b} + \tkzDefCircle[R](B,\rt) \tkzGetPoint{c} + \tkzDrawCircles(A,a) + \tkzDrawCircles[orange](B,b B,c) + \tkzDrawCircle[orange,dashed](I,B) \tkzDrawPoints(O,A,B,a,a',E,F,T',T) \tkzDrawLines(O,B A,a B,T' A,T) \tkzDrawLines[add= 1 and 8](T',h) \tkzLabelPoints(O,A,B,a,a',E,F,T,T') \end{tikzpicture} - -\begin{tkzexample}[code only,small] - \begin{tikzpicture} - \pgfmathsetmacro{\r}{1}% - \pgfmathsetmacro{\R}{2}% - \pgfmathsetmacro{\rt}{\R-\r}% - \tkzDefPoints{0/0/A,4/2/B,2/3/K} - \tkzDefMidPoint(A,B) \tkzGetPoint{I} - \tkzInterLC[R](A,B)(B,\rt) \tkzGetPoints{E}{F} - \tkzInterCC(I,B)(B,F) \tkzGetPoints{a}{a'} - \tkzInterLC[R](B,a)(B,\R) \tkzGetPoints{X'}{T'} - \tkzDefTangent[at=T'](B) \tkzGetPoint{h} - \tkzInterLL(T',h)(A,B) \tkzGetPoint{O} - \tkzInterLC[R](O,T')(A,\r) \tkzGetPoints{T}{T} - \tkzDrawCircle[R](A,\r) \tkzDrawCircle[R](B,\R) - \tkzDrawCircle[R,orange](B,\rt) \tkzDrawCircle[orange,dashed](I,B) - \tkzDrawPoints(O,A,B,a,a',E,F,T',T) - \tkzDrawLines(O,B A,a B,T' A,T) - \tkzDrawLines[add= 1 and 8](T',h) - \tkzLabelPoints(O,A,B,a,a',E,F,T,T') - \end{tikzpicture} \end{tkzexample} \newpage @@ -907,33 +815,12 @@ Another solution }; \end{tikzpicture}% -\begin{tikzpicture} -\tkzDefPoints{0/0/A,4/2/B,2/3/K} -\tkzDrawCircles[R](A,1 B,3) -\tkzInterCC[R](A,1)(K,3) \tkzGetPoints{a}{a'} -\tkzInterCC[R](B,3)(K,3) \tkzGetPoints{b}{b'} -\tkzInterLL(a,a')(b,b') \tkzGetPoint{X} -\tkzDefPointBy[projection= onto A--B](X) \tkzGetPoint{H} -\tkzGetPoint{C} -\tkzInterLC[R](A,B)(B,3) \tkzGetPoints{b1}{E} -\tkzInterLC[R](A,B)(A,1) \tkzGetPoints{D}{a2} -\tkzDefMidPoint(D,E) \tkzGetPoint{I} -\tkzDrawCircle[orange](I,D) -\tkzInterLC(X,H)(I,D) \tkzGetPoints{M}{M'} -\tkzInterLC(M,D)(A,D) \tkzGetPoints{P}{P'} -\tkzInterLC(M,E)(B,E) \tkzGetPoints{Q'}{Q} -\tkzInterLL(P,Q)(A,B) \tkzGetPoint{O} -\tkzDrawSegments[orange](A,P I,M B,Q) -\tkzDrawPoints(A,B,D,E,M,I,O,P,Q,X,H) -\tkzDrawLines(O,E M,D M,E O,Q) -\tkzDrawLine[add= 3 and 4,orange](X,H) -\tkzLabelPoints(A,B,D,E,M,I,O,P,Q,X,H) -\end{tikzpicture} -\begin{tkzexample}[code only,small] +\begin{tkzexample}[vbox,small] \begin{tikzpicture} \tkzDefPoints{0/0/A,4/2/B,2/3/K} -\tkzDrawCircles[R](A,1 B,3) +\tkzDefCircle[R](A,1) \tkzGetPoint{a} +\tkzDefCircle[R](B,3) \tkzGetPoint{b} \tkzInterCC[R](A,1)(K,3) \tkzGetPoints{a}{a'} \tkzInterCC[R](B,3)(K,3) \tkzGetPoints{b}{b'} \tkzInterLL(a,a')(b,b') \tkzGetPoint{X} @@ -947,6 +834,7 @@ Another solution \tkzInterLC(M,D)(A,D) \tkzGetPoints{P}{P'} \tkzInterLC(M,E)(B,E) \tkzGetPoints{Q'}{Q} \tkzInterLL(P,Q)(A,B) \tkzGetPoint{O} +\tkzDrawCircles(A,a B,b) \tkzDrawSegments[orange](A,P I,M B,Q) \tkzDrawPoints(A,B,D,E,M,I,O,P,Q,X,H) \tkzDrawLines(O,E M,D M,E O,Q) @@ -966,45 +854,26 @@ Another solution }; \end{tikzpicture}% - \begin{tikzpicture} - \tkzDefPoint(0,0){A} - \tkzDefRandPointOn[circle= center A radius 4] \tkzGetPoint{B} - \tkzDefPointBy[rotation= center A angle 180](B) \tkzGetPoint{C} - \tkzInterCC(A,B)(B,A) \tkzGetPoints{I}{I'} - \tkzInterCC(A,I)(I,A) \tkzGetPoints{J}{B} - \tkzInterCC(B,A)(C,B) \tkzGetPoints{D}{E} - \tkzInterCC(D,B)(E,B) \tkzGetPoints{M}{M'} - \tkzSetUpArc[color=orange,style=solid,delta=10] - \tkzDrawArc(C,D)(E) - \tkzDrawArc(B,E)(D) - \tkzDrawCircle[color=teal,line width=.2pt](A,B) - \tkzDrawArc(D,B)(M) - \tkzDrawArc(E,M)(B) - \tkzCompasss[color=orange,style=solid](B,I I,J J,C) - \tkzDrawPoints(A,B,C,D,E,M) - \tkzLabelPoints(A,B,M) - \end{tikzpicture} - - \begin{tkzexample}[code only,small] - \begin{tikzpicture} - \tkzDefPoint(0,0){A} - \tkzDefRandPointOn[circle= center A radius 4] \tkzGetPoint{B} - \tkzDefPointBy[rotation= center A angle 180](B) \tkzGetPoint{C} - \tkzInterCC(A,B)(B,A) \tkzGetPoints{I}{I'} - \tkzInterCC(A,I)(I,A) \tkzGetPoints{J}{B} - \tkzInterCC(B,A)(C,B) \tkzGetPoints{D}{E} - \tkzInterCC(D,B)(E,B) \tkzGetPoints{M}{M'} - \tkzSetUpArc[color=orange,style=solid,delta=10] - \tkzDrawArc(C,D)(E) - \tkzDrawArc(B,E)(D) - \tkzDrawCircle[color=teal,line width=.2pt](A,B) - \tkzDrawArc(D,B)(M) - \tkzDrawArc(E,M)(B) - \tkzCompasss[color=orange,style=solid](B,I I,J J,C) - \tkzDrawPoints(A,B,C,D,E,M) - \tkzLabelPoints(A,B,M) - \end{tikzpicture} - \end{tkzexample} +\begin{tkzexample}[vbox,small] +\begin{tikzpicture} +\tkzDefPoint(0,0){A} +\tkzDefRandPointOn[circle= center A radius 4] \tkzGetPoint{B} +\tkzDefPointBy[rotation= center A angle 180](B) \tkzGetPoint{C} +\tkzInterCC(A,B)(B,A) \tkzGetPoints{I}{I'} +\tkzInterCC(A,I)(I,A) \tkzGetPoints{J}{B} +\tkzInterCC(B,A)(C,B) \tkzGetPoints{D}{E} +\tkzInterCC(D,B)(E,B) \tkzGetPoints{M}{M'} +\tkzSetUpArc[color=orange,style=solid,delta=10] +\tkzDrawArc(C,D)(E) +\tkzDrawArc(B,E)(D) +\tkzDrawCircle[color=teal,line width=.2pt](A,B) +\tkzDrawArc(D,B)(M) +\tkzDrawArc(E,M)(B) +\tkzCompasss[color=orange,style=solid](B,I I,J J,C) +\tkzDrawPoints(A,B,C,D,E,M) +\tkzLabelPoints(A,B,M) +\end{tikzpicture} +\end{tkzexample} \newpage @@ -1025,14 +894,7 @@ The set of all points whose distances from two fixed points are in a constant ra With \pkg{tkz-euclide} is easy to show you the last definition -\subsubsection*{The code and the analyse} - -\begin{tkzexample}[code only, small] -\documentclass{standalone} - % Excellent class to show the result and to verify the bounding box. -\usepackage{tkz-euclide} - % no need to use \usetkzobj ! -\begin{document} +\begin{tkzexample}[vbox, small] \begin{tikzpicture}[scale=1.5] % Firstly we defined two fixed point. % The figure depends of these points and the ratio K @@ -1040,39 +902,19 @@ With \pkg{tkz-euclide} is easy to show you the last definition \tkzDefPoint(4,0){B} % tkz-euclide.sty knows about the apollonius's circle % with K=2 we search some points like I such as IA=2 x IB -\tkzDefCircle[apollonius,K=2](A,B) \tkzGetPoint{K1} -\tkzGetLength{rAp} -\tkzDefPointOnCircle[R= angle 30 center K1 radius \rAp] +\tkzDefCircle[apollonius,K=2](A,B) \tkzGetPoints{K1}{k} +\tkzDefPointOnCircle[through= center K1 angle 30 point k] \tkzGetPoint{I} -\tkzDefPointOnCircle[R= angle 280 center K1 radius \rAp] +\tkzDefPointOnCircle[through= center K1 angle 280 point k] \tkzGetPoint{J} \tkzDrawSegments[new](A,I I,B A,J J,B) -\tkzDrawCircle[R,color = teal,fill=teal!20,opacity=.4](K1,\rAp pt) +\tkzDrawCircle[color = teal,fill=teal!20,opacity=.4](K1,k) \tkzDrawPoints(A,B,K1,I,J) \tkzDrawSegment(A,B) \tkzLabelPoints[below,font=\scriptsize](A,B,K1,I,J) \end{tikzpicture} -\end{document} \end{tkzexample} -\subsubsection*{The result} - -\begin{tikzpicture}[scale=1.5] -\tkzDefPoint(0,0){A} -\tkzDefPoint(4,0){B} -\tkzDefCircle[apollonius,K=2](A,B) \tkzGetPoint{K1} -\tkzGetLength{rAp} -\tkzDefPointOnCircle[R = angle 30 center K1 radius \rAp] -\tkzGetPoint{I} -\tkzDefPointOnCircle[R = angle 280 center K1 radius \rAp] -\tkzGetPoint{J} -\tkzDrawSegments[new](A,I I,B A,J J,B) -\tkzDrawCircle[R,fill=teal!20,opacity=.4](K1,\rAp pt) -\tkzDrawPoints(A,B,K1,I,J) -\tkzDrawSegment(A,B) -\tkzLabelPoints[below,font=\scriptsize](A,B,K1,I,J) -\end{tikzpicture} - \subsection{Application of Inversion : \tkzname{Pappus chain} }\label{pappus} \begin{tikzpicture} \node [mybox,title={Pappus chain}] (box){% @@ -1082,23 +924,24 @@ From Wikipedia {\emph{In geometry, the Pappus chain is a ring of circles betwee }; \end{tikzpicture}% - \begin{tkzexample}[vbox,small] +\begin{tikzpicture}[ultra thin] \pgfmathsetmacro{\xB}{6}% \pgfmathsetmacro{\xC}{9}% \pgfmathsetmacro{\xD}{(\xC*\xC)/\xB}% \pgfmathsetmacro{\xJ}{(\xC+\xD)/2}% \pgfmathsetmacro{\r}{\xD-\xJ}% \pgfmathsetmacro{\nc}{16}% -\begin{tikzpicture}[ultra thin] \tkzDefPoints{0/0/A,\xB/0/B,\xC/0/C,\xD/0/D} - \tkzDrawCircle[diameter,fill=teal!20](A,C) - \tkzDrawCircle[diameter,fill=teal!30](A,B) + \tkzDefCircle[diameter](A,C) \tkzGetPoint{x} + \tkzDrawCircle[fill=teal!30](x,C) + \tkzDefCircle[diameter](A,B) \tkzGetPoint{y} + \tkzDrawCircle[fill=teal!30](y,B) \foreach \i in {-\nc,...,0,...,\nc} {\tkzDefPoint(\xJ,2*\r*\i){J} \tkzDefPoint(\xJ,2*\r*\i-\r){H} \tkzDefCircleBy[inversion = center A through C](J,H) - \tkzDrawCircle[diameter,fill=teal](tkzFirstPointResult,tkzSecondPointResult)} + \tkzDrawCircle[fill=teal](tkzFirstPointResult,tkzSecondPointResult)} \end{tikzpicture} \end{tkzexample} @@ -1141,41 +984,44 @@ Since the triangles $AO_2C$ and $AO_1E$ are isosceles the angles at the base are }; \end{tikzpicture}% + +\begin{tkzexample}[vbox,overhang,small] \begin{tikzpicture} - \tkzDefPoints{0/0/A,12/0/C} - \tkzDefGoldenRatio(A,C) \tkzGetPoint{B} - \tkzDefMidPoint(A,C) \tkzGetPoint{O} - \tkzDefMidPoint(A,B) \tkzGetPoint{O_1} - \tkzDefMidPoint(B,C) \tkzGetPoint{O_2} - \tkzDefExtSimilitudeCenter(O_1,A)(O_2,B) \tkzGetPoint{M_0} - \tkzDefIntSimilitudeCenter(O,A)(O_1,A) \tkzGetPoint{M_1} - \tkzDefIntSimilitudeCenter(O,C)(O_2,C) \tkzGetPoint{M_2} - \tkzInterCC(O_1,A)(M_2,C) \tkzGetFirstPoint{E} - \tkzInterCC(O_2,C)(M_1,A) \tkzGetSecondPoint{F} - \tkzInterCC(O,A)(M_0,B) \tkzGetFirstPoint{D} - \tkzInterLL(O_1,E)(O_2,F) \tkzGetPoint{O_3} - \tkzDefCircle[circum](E,F,B) \tkzGetPoint{0_4} - \tkzInterLC(A,D)(O_1,A) \tkzGetFirstPoint{I} - \tkzInterLC(C,D)(O_2,B) \tkzGetSecondPoint{K} - \tkzInterLC[common=D](A,D)(O_3,D) \tkzGetFirstPoint{G} - \tkzInterLC[common=D](C,D)(O_3,D) \tkzGetFirstPoint{H} - \tkzInterLL(C,G)(B,K) \tkzGetPoint{M} - \tkzInterLL(A,H)(B,I) \tkzGetPoint{L} - \tkzInterLL(L,G)(A,C) \tkzGetPoint{N} - \tkzInterLL(M,H)(A,C) \tkzGetPoint{P} - \tkzDrawCircles[red,thin](O_3,F) - \tkzDrawCircles[new,thin](0_4,B) - \tkzDrawSemiCircles[teal](O,C O_1,B O_2,C) - \tkzDrawSemiCircles[green](M_2,C) - \tkzDrawSemiCircles[green,swap](M_1,A) - \tkzDrawSegment(A,C) - \tkzDrawSegments[new](O_1,O_3 O_2,O_3) - \tkzDrawSegments[new,very thin](B,D A,D C,D G,H I,B K,B B,G B,H C,G A,H G,N H,P) - \tkzDrawPoints(A,B,C,M_1,M_2,E,O_3,F,D,0_4,O_1,O_2,I,K,G,H,L,P,N,M) - \tkzLabelPoints[font=\scriptsize](A,B,C,M_1,M_2,F,O_1,O_2,I,K,G,H,L,M,N) - \tkzLabelPoints[font=\scriptsize,right](E,O_3,D,0_4,P) +\tkzDefPoints{0/0/A,12/0/C} +\tkzDefGoldenRatio(A,C) \tkzGetPoint{B} +\tkzDefMidPoint(A,C) \tkzGetPoint{O} +\tkzDefMidPoint(A,B) \tkzGetPoint{O_1} +\tkzDefMidPoint(B,C) \tkzGetPoint{O_2} +\tkzDefExtSimilitudeCenter(O_1,A)(O_2,B) \tkzGetPoint{M_0} +\tkzDefIntSimilitudeCenter(O,A)(O_1,A) \tkzGetPoint{M_1} +\tkzDefIntSimilitudeCenter(O,C)(O_2,C) \tkzGetPoint{M_2} +\tkzInterCC(O_1,A)(M_2,C) \tkzGetFirstPoint{E} +\tkzInterCC(O_2,C)(M_1,A) \tkzGetSecondPoint{F} +\tkzInterCC(O,A)(M_0,B) \tkzGetFirstPoint{D} +\tkzInterLL(O_1,E)(O_2,F) \tkzGetPoint{O_3} +\tkzDefCircle[circum](E,F,B) \tkzGetPoint{0_4} +\tkzInterLC(A,D)(O_1,A) \tkzGetFirstPoint{I} +\tkzInterLC(C,D)(O_2,B) \tkzGetSecondPoint{K} +\tkzInterLC[common=D](A,D)(O_3,D) \tkzGetFirstPoint{G} +\tkzInterLC[common=D](C,D)(O_3,D) \tkzGetFirstPoint{H} +\tkzInterLL(C,G)(B,K) \tkzGetPoint{M} +\tkzInterLL(A,H)(B,I) \tkzGetPoint{L} +\tkzInterLL(L,G)(A,C) \tkzGetPoint{N} +\tkzInterLL(M,H)(A,C) \tkzGetPoint{P} +\tkzDrawCircles[red,thin](O_3,F) +\tkzDrawCircles[new,thin](0_4,B) +\tkzDrawSemiCircles[teal](O,C O_1,B O_2,C) +\tkzDrawSemiCircles[green](M_2,C) +\tkzDrawSemiCircles[green,swap](M_1,A) +\tkzDrawSegment(A,C) +\tkzDrawSegments[new](O_1,O_3 O_2,O_3) +\tkzDrawSegments[new,very thin](B,H C,G A,H G,N H,P) +\tkzDrawSegments[new,very thin](B,D A,D C,D G,H I,B K,B B,G) +\tkzDrawPoints(A,B,C,M_1,M_2,E,O_3,F,D,0_4,O_1,O_2,I,K,G,H,L,P,N,M) +\tkzLabelPoints[font=\scriptsize](A,B,C,M_1,M_2,F,O_1,O_2,I,K,G,H,L,M,N) +\tkzLabelPoints[font=\scriptsize,right](E,O_3,D,0_4,P) \end{tikzpicture} - +\end{tkzexample} Let $GH$ be the diameter of the circle which is parallel to $AC$, and let the circle touch the semicircles on $AC$, $AB$, $BC$ in $D$, $E$, $F$ respectively. @@ -1196,7 +1042,7 @@ hence \[ \frac{AN}{NP} = \frac{NP}{PC} \quad\text{so} \quad {NP}^2 = AN \times PC \] Now suppose that $B$ divides $[AC]$ according to the divine proportion that is : -\[\phi = \frac{AB}{BC} = \frac{AC}{AB} \quad\text{then} \quad AN = \phi NP \text{and} NP = \phi PC \] +\[\phi = \frac{AB}{BC} = \frac{AC}{AB} \quad\text{then} \quad AN = \phi NP \text{and}\quad NP = \phi PC \] We have \[ AC = AN + NP + PC\quad \text{either} \quad AB + BC = = AN + NP + PC \quad \text{or} \quad (\phi + 1) BC = AN + NP + PC \] @@ -1232,71 +1078,45 @@ But don't forget that behind or far above \pkg{tkz-euclide} there is TikZ. I'm o The last example is very complex and it is to show you all that we can do with \pkg{tkz-euclide}. -\subsubsection*{The code and the analyse} - -\begin{tkzexample}[code only,small] -% !TEX TS-program = lualatex -\documentclass{standalone} -\usepackage{tkz-euclide} -\tkzSetUpColors[background=white,text=black] -\tkzSetUpCompass[color=orange, line width=.4pt,delta=10] -\tkzSetUpArc[color=gray,line width=.4pt] -\tkzSetUpPoint[size=2,color=teal] -\tkzSetUpLine[line width=.4pt,color=teal] -\tkzSetUpStyle[orange]{new} -\tikzset{every picture/.style={line width=.4pt}} - -\begin{document} -\begin{tikzpicture}[scale=.75] +\begin{tkzexample}[vbox,small] +\begin{tikzpicture}[scale=.6] \tkzDefPoints{0/0/A,6/0/B,0.8/4/C} -% we need some special points if the triangle, tkz-euclide.sty knows about them - -\tkzDefTriangleCenter[euler](A,B,C) \tkzGetPoint{N} % or \tkzEulerCenter(A,B,C) -\tkzDefTriangleCenter[circum](A,B,C) \tkzGetPoint{O} % \tkzCircumCenter(A,B,C) -\tkzDefTriangleCenter[lemoine](A,B,C) \tkzGetPoint{K} -\tkzDefTriangleCenter[ortho](A,B,C) \tkzGetPoint{H} - - % \tkzDefSpcTriangle new macro to define new triangle in relation wth ABC +\tkzDefTriangleCenter[euler](A,B,C) \tkzGetPoint{N} +\tkzDefTriangleCenter[circum](A,B,C) \tkzGetPoint{O} +\tkzDefTriangleCenter[lemoine](A,B,C) \tkzGetPoint{K} +\tkzDefTriangleCenter[ortho](A,B,C) \tkzGetPoint{H} \tkzDefSpcTriangle[excentral,name=J](A,B,C){a,b,c} \tkzDefSpcTriangle[centroid,name=M](A,B,C){a,b,c} -\tkzDefCircle[in](Ma,Mb,Mc) \tkzGetPoint{Sp} % Sp Spieker center - -% here I used the definition but tkz-euclide knows this point -% \tkzDefTriangleCenter[spieker](A,B,C) \tkzGetPoint{Sp} -% each center has three projections on the sides of the triangle ABC -% We can do this with one macro +\tkzDefCircle[in](Ma,Mb,Mc) \tkzGetPoint{Sp} % Sp Spieker center \tkzDefProjExcenter[name=J](A,B,C)(a,b,c){Y,Z,X} - -% but possible is -% \tkzDefPointBy[projection=onto A--C ](Ja) \tkzGetPoint{Za} \tkzDefLine[parallel=through Za](A,B) \tkzGetPoint{Xc} \tkzInterLL(Za,Xc)(C,B) \tkzGetPoint{C'} \tkzDefLine[parallel=through Zc](B,C) \tkzGetPoint{Ya} \tkzInterLL(Zc,Ya)(A,B) \tkzGetPoint{A'} \tkzDefPointBy[reflection= over Ja--Jc](C')\tkzGetPoint{Ab} \tkzDefPointBy[reflection= over Ja--Jc](A')\tkzGetPoint{Cb} -% Now we can get the center of THE CIRCLE : Q -% BUT we need to find the radius or a point on the circle \tkzInterLL(K,O)(N,Sp) \tkzGetPoint{Q} \tkzInterLC(A,B)(Q,Cb) \tkzGetFirstPoint{Ba} \tkzInterLC(A,C)(Q,Cb) \tkzGetPoints{Ac}{Ca} \tkzInterLC(B,C')(Q,Cb) \tkzGetFirstPoint{Bc} -\tkzInterLC(Ja,Q)(Q,Cb) \tkzGetSecondPoint{F'a} -\tkzInterLC(Jc,Q)(Q,Cb) \tkzGetFirstPoint{F'c} -\tkzInterLC(Jb,Q)(Q,Cb) \tkzGetSecondPoint{F'b} -\tkzInterLC[common=F'a](Sp,F'a)(Ja,F'a) \tkzGetFirstPoint{Fa} -\tkzInterLC[common=F'b](Sp,F'b)(Jb,F'b) \tkzGetFirstPoint{Fb} -\tkzInterLC[common=F'c](Sp,F'c)(Jc,F'c) \tkzGetFirstPoint{Fc} +\tkzInterLC[next to=Ja](Ja,Q)(Q,Cb) \tkzGetFirstPoint{F'a} +\tkzInterLC[next to=Jc](Jc,Q)(Q,Cb) \tkzGetFirstPoint{F'c} +\tkzInterLC[next to=Jb](Jb,Q)(Q,Cb) \tkzGetFirstPoint{F'b} +\tkzInterLC[common=F'a](Sp,F'a)(Ja,F'a) \tkzGetFirstPoint{Fa} +\tkzInterLC[common=F'b](Sp,F'b)(Jb,F'b) \tkzGetFirstPoint{Fb} +\tkzInterLC[common=F'c](Sp,F'c)(Jc,F'c) \tkzGetFirstPoint{Fc} \tkzInterLC(Mc,Sp)(Q,Cb) \tkzGetFirstPoint{A''} -\tkzDefLine[parallel=through A''](N,Mc) \tkzGetPoint{q} +\tkzDefCircle[euler](A,B,C) \tkzGetPoints{E}{e} +\tkzDefCircle[ex](C,A,B) \tkzGetPoints{Ea}{a} +\tkzDefCircle[ex](A,B,C) \tkzGetPoints{Eb}{b} +\tkzDefCircle[ex](B,C,A) \tkzGetPoints{Ec}{c} % Calculations are done, now you can draw, mark and label +\tkzDrawCircles(Q,Cb E,e)% +\tkzDrawCircles(Eb,b Ea,a Ec,c) \tkzDrawPolygon(A,B,C) -\tkzDrawCircle(Q,Bc)% -\tkzDrawCircle[euler,lightgray](A,B,C) -\tkzDrawCircles[ex](A,B,C B,C,A C,A,B) -\tkzDrawSegments[dashed](A,A' C,C' A',Zc Za,C' B,Cb B,Ab A,Ca C,Ac - Ja,Xa Jb,Yb Jc,Zc) +\tkzDrawSegments[dashed](A,A' C,C' A',Zc Za,C' B,Cb B,Ab A,Ca) +\tkzDrawSegments[dashed](C,Ac Ja,Xa Jb,Yb Jc,Zc) \begin{scope} \tkzClipCircle(Q,Cb) % We limit the drawing of the lines \tkzDrawLine[add=5 and 12,orange](K,O) @@ -1311,70 +1131,6 @@ The last example is very complex and it is to show you all that we can do with \ \tkzLabelPoints[right](C) \tkzLabelPoints[below right](A) \tkzLabelPoints[above right](Yb) -\tkzDrawSegments[color=green!50!black](Mc,N Mc,A'' A'',Q) -\tkzDrawSegments[color=red,dashed](Ac,Ab Ca,Cb Ba,Bc Ja,Jc A',Cb C',Ab) -\tkzDrawSegments[color=red](Cb,Ab Bc,Ac Ba,Ca A',C') -\tkzMarkSegments[color=red,mark=|](Cb,Ab Bc,Ac Ba,Ca) -\tkzMarkRightAngles(Jc,Zc,A Ja,Xa,B Jb,Yb,C) -\tkzDrawSegments[green,dashed](A,F'a B,F'b C,F'c) -\end{tikzpicture} -\end{document} -\end{tkzexample} - -\subsubsection*{The result} - -\begin{tikzpicture}[scale=.6] -\tkzDefPoints{0/0/A,6/0/B,0.8/4/C} -\tkzDefTriangleCenter[euler](A,B,C) \tkzGetPoint{N} -\tkzDefTriangleCenter[circum](A,B,C) \tkzGetPoint{O} -\tkzDefTriangleCenter[lemoine](A,B,C) \tkzGetPoint{K} -\tkzDefTriangleCenter[ortho](A,B,C) \tkzGetPoint{H} -\tkzDefSpcTriangle[excentral,name=J](A,B,C){a,b,c} -\tkzDefSpcTriangle[centroid,name=M](A,B,C){a,b,c} -\tkzDefCircle[in](Ma,Mb,Mc) \tkzGetPoint{Sp} - -\tkzDefProjExcenter[name=J](A,B,C)(a,b,c){Y,Z,X} -\tkzDefLine[parallel=through Za](A,B) \tkzGetPoint{Xc} -\tkzInterLL(Za,Xc)(C,B) \tkzGetPoint{C'} -\tkzDefLine[parallel=through Zc](B,C) \tkzGetPoint{Ya} -\tkzInterLL(Zc,Ya)(A,B) \tkzGetPoint{A'} -\tkzDefPointBy[reflection= over Ja--Jc](C')\tkzGetPoint{Ab} -\tkzDefPointBy[reflection= over Ja--Jc](A')\tkzGetPoint{Cb} - -\tkzInterLL(K,O)(N,Sp) \tkzGetPoint{Q} -\tkzInterLC(A,B)(Q,Cb) \tkzGetFirstPoint{Ba} -\tkzInterLC(A,C)(Q,Cb) \tkzGetPoints{Ac}{Ca} -\tkzInterLC(B,C')(Q,Cb) \tkzGetFirstPoint{Bc} -\tkzInterLC(Ja,Q)(Q,Cb) \tkzGetSecondPoint{F'a} -\tkzInterLC(Jc,Q)(Q,Cb) \tkzGetFirstPoint{F'c} -\tkzInterLC(Jb,Q)(Q,Cb) \tkzGetSecondPoint{F'b} -\tkzInterLC[common=F'a](Sp,F'a)(Ja,F'a) \tkzGetFirstPoint{Fa} -\tkzInterLC[common=F'b](Sp,F'b)(Jb,F'b) \tkzGetFirstPoint{Fb} -\tkzInterLC[common=F'c](Sp,F'c)(Jc,F'c) \tkzGetFirstPoint{Fc} -\tkzInterLC(Mc,Sp)(Q,Cb) \tkzGetFirstPoint{A''} -\tkzDefLine[parallel=through A''](N,Mc) \tkzGetPoint{q} -\tkzDrawPolygon(A,B,C) -\tkzDrawCircle(Q,Bc)% -\tkzDrawCircle[euler,lightgray](A,B,C) -\tkzDrawCircles[ex](A,B,C B,C,A C,A,B) -\tkzDrawSegments[dashed](A,A' C,C' A',Zc Za,C' B,Cb B,Ab A,Ca C,Ac - Ja,Xa Jb,Yb Jc,Zc) - -\begin{scope} - \tkzClipCircle(Q,Cb) - \tkzDrawLine[add=5 and 12,orange](K,O) - \tkzDrawLine[add=12 and 28,red!50!black](N,Sp) -\end{scope} - -\tkzDrawPoints(A,B,C,K,Ja,Jb,Jc,Q,N,O,Sp,Mc,Xa,Xb,Yb,Yc,Za,Zc) -\tkzDrawPoints(A',C',A'',Ab,Cb,Bc,Ca,Ac,Ba,Fa,Fb,Fc,F'a,F'b,F'c) -\tkzLabelPoints(Ja,Jb,Jc,Q,Xa,Xb,Za,Zc,Ab,Cb,Bc,Ca,Ac,Ba,F'b) -\tkzLabelPoints[above](O,K,F'a,Fa,A'') -\tkzLabelPoints[below](B,F'c,Yc,N,Sp,Fc,Mc) -\tkzLabelPoints[left](A',C',Fb) -\tkzLabelPoints[right](C) -\tkzLabelPoints[below right](A) -\tkzLabelPoints[above right](Yb) \tkzDrawSegments(Fc,F'c Fb,F'b Fa,F'a) \tkzDrawSegments[color=green!50!black](Mc,N Mc,A'' A'',Q) \tkzDrawSegments[color=red,dashed](Ac,Ab Ca,Cb Ba,Bc Ja,Jc A',Cb C',Ab) @@ -1383,6 +1139,6 @@ The last example is very complex and it is to show you all that we can do with \ \tkzMarkRightAngles(Jc,Zc,A Ja,Xa,B Jb,Yb,C) \tkzDrawSegments[green,dashed](A,F'a B,F'b C,F'c) \end{tikzpicture} - +\end{tkzexample} \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-filling.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-filling.tex index 8976e9e7b3..c8f1ea14f1 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-filling.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-filling.tex @@ -41,7 +41,7 @@ You don't need to put \tkzname{radius} because that's the default option. Of cou \tkzDefMidPoint(A,D) \tkzGetPoint{F} \tkzDefMidPoint(B,C) \tkzGetPoint{E} \tkzDefMidPoint(B,D) \tkzGetPoint{Q} - \tkzDefTangent[from = B](F,A) \tkzGetPoints{H}{G} + \tkzDefLine[tangent from = B](F,A) \tkzGetPoints{H}{G} \tkzInterLL(F,G)(C,D) \tkzGetPoint{J} \tkzInterLL(A,J)(F,E) \tkzGetPoint{K} \tkzDefPointBy[projection=onto B--A](K) @@ -88,8 +88,10 @@ You don't need to put \tkzname{radius} because that's the default option. Of cou \tkzDefMidPoint(I,K) \tkzGetPoint{b} \begin{scope} \tkzFillSector[fill=blue!10](B,C)(A) - \tkzDrawSemiCircle[diameter,fill=white](A,B) - \tkzDrawSemiCircle[diameter,fill=white](B,C) + \tkzDefMidPoint(A,B) \tkzGetPoint{x} + \tkzDrawSemiCircle[fill=white](x,B) + \tkzDefMidPoint(B,C) \tkzGetPoint{y} + \tkzDrawSemiCircle[fill=white](y,C) \tkzClipCircle(E,B) \tkzClipCircle(F,B) \tkzFillCircle[fill=blue!10](B,A) diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-installation.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-installation.tex index 32752f857b..8432fd7ee1 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-installation.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-installation.tex @@ -1,4 +1,4 @@ - \section{Installation} +\section{Installation} \tkzname{\tkznameofpack} is on the server of the \tkzname{CTAN}\footnote{\tkzname{\tkznameofpack} is part of \NameDist{TeXLive} and \tkzname{tlmgr} allows you to install them. This package is also part of \NameDist{MiKTeX} under \NameSys{Windows}.}. If you want to test a beta version, just put the following files in a texmf folder that your system can find. You will have to check several points: @@ -6,6 +6,29 @@ You will have to check several points: \begin{itemize}\setlength{\itemsep}{5pt} \item The \tkzname{\tkznameofpack} folder must be located on a path recognized by \tkzname{latex}. \item The \tkzname{\tkznameofpack} uses \tkzNamePack{xfp}. + +\item You need to have \PGF\ installed on your computer. \tkzname{\tkznameofpack} use several libraries of \TIKZ + + \begin{tabular}{l} + angles, \\ + arrows, \\ + arrows.meta, \\ + calc, \\ + decorations, \\ + decorations.markings, \\ + decorations.pathreplacing, \\ + decorations.shapes, \\ + decorations.text, \\ + decorations.pathmorphing, \\ + intersections, \\ + math, \\ + plotmarks, \\ + positioning, \\ + quotes, \\ + shapes.misc, \\ + through +\end{tabular} + \item This documentation and all examples were obtained with \tkzname{lualatex} but \tkzname{pdflatex} or \tkzname{xelatex} should be suitable. \end{itemize} diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-intersec.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-intersection.tex index e55ac4faf8..1583f91e2b 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-intersec.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-intersection.tex @@ -14,9 +14,9 @@ Defines the intersection point \tkzname{tkzPointResult} of the two lines $(AB)$ \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[rotate=-45,scale=.75] \tkzDefPoint(2,1){A} - \tkzDefPoint(6,5){B} + \tkzDefPoint(6,5){B} \tkzDefPoint(3,6){C} - \tkzDefPoint(5,2){D} + \tkzDefPoint(5,2){D} \tkzDrawLines(A,B C,D) \tkzInterLL(A,B)(C,D) \tkzGetPoint{I} @@ -52,7 +52,7 @@ options & default & definition \\ \medskip The macro defines the intersection points $I$ and $J$ of the line $(AB)$ and the center circle $O$ with radius $r$ if they exist; otherwise, an error will be reported in the |.log| file. \tkzname{with nodes} avoids you to calculate the radius which is the length of $[CD]$. -If common and near are not used then \tkzname{tkzFirstPoint} is the smallest angle (angle with \tkzname{tkzSecondPoint} and the center of the circle). +If \tkzname{common} and \tkzname{near} are not used then \tkzname{tkzFirstPoint} is the smallest angle (angle with \tkzname{tkzSecondPoint} and the center of the circle). \end{NewMacroBox} \begin{NewMacroBox}{tkzTestInterLC}{\parg{$O,A$}\parg{$O',B$}}% @@ -94,7 +94,7 @@ In the following example, the drawing of the circle uses two points and the inte \tkzDefPoint(-2,4){La} \tkzDefPoint(5,0){Lb} \tkzDefPoint(3,3){C} - \tkzInterLC(A,B)(O,C) \tkzGetPoints{D}{E} + \tkzInterLC(La,Lb)(O,C) \tkzGetPoints{D}{E} \tkzMarkAngle[->,size=1.5](E,D,O) \tkzDrawPolygons[new](O,D,E) \tkzMarkAngle[->,size=1.5](D,E,O) @@ -106,7 +106,7 @@ In the following example, the drawing of the circle uses two points and the inte \end{tikzpicture} \end{tkzexample} -\subsubsection{Line passing through the cente,r option \tkzname{common}} +\subsubsection{Line passing through the center option \tkzname{common}} This case is special. You cannot compare the angles. In this case, the option \tkzname{near} must be used. \tkzname{tkzFirstPoint} is assigned to the point closest to the first point given for the line. Here we want $A$ to be closest to $Lb$. \begin{tkzexample}[latex=7cm,small] @@ -122,8 +122,8 @@ This case is special. You cannot compare the angles. In this case, the option \t \tkzInterLC[near](Lb,La)(O,D) \tkzGetFirstPoint{A} \tkzDrawSegments(O,A) - \tkzDrawPoints(O,D,La,Lb) - \tkzLabelPoints(O,D,La,Lb,a) + \tkzDrawPoints(O,D,A,La,Lb) + \tkzLabelPoints(O,D,A,La,Lb) \end{tikzpicture} \end{tkzexample} @@ -216,10 +216,10 @@ Figure from \url{http://gogeometry.com/problem/p190_tangent_circle} \begin{tikzpicture}[scale=.75] \tkzDefPoint(0,0){A} \tkzDefPoint(8,0){B} - \tkzDefMidPoint(A,B) \tkzGetPoint{O} - \tkzDefMidPoint(O,B) \tkzGetPoint{O'} - \tkzDefTangent[from=A](O',B) \tkzGetFirstPoint{E} - \tkzInterLC(A,E)(O,B) \tkzGetFirstPoint{D} + \tkzDefMidPoint(A,B) \tkzGetPoint{O} + \tkzDefMidPoint(O,B) \tkzGetPoint{O'} + \tkzDefLine[tangent from=A](O',B) \tkzGetFirstPoint{E} + \tkzInterLC(A,E)(O,B) \tkzGetFirstPoint{D} \tkzDefPointBy[projection=onto A--B](D) \tkzGetPoint{F} \tkzDrawCircles(O,B O',B) @@ -228,7 +228,7 @@ Figure from \url{http://gogeometry.com/problem/p190_tangent_circle} opacity=.4](A,O F,B) \tkzDrawPoints(A,B,O,O',E,D) \tkzMarkRightAngle(D,F,B) - \tkzLabelPoints(A,B,O,O',E,D) + \tkzLabelPoints[below right](A,B,O,O',E,D) \end{tikzpicture} \end{tkzexample} @@ -276,7 +276,7 @@ With \tkzname{xfp} and \tkzcname{fpeval}: % or \edef\tkzLen{\fpeval{0.0002/0.0001}} \tkzInterLC[R](A,B)(O, \tkzLen) \tkzGetPoints{I}{J} - \tkzDrawCircle[R](O,\tkzLen) + \tkzDrawCircle(O,I) \tkzDrawPoints[color=blue](A,B) \tkzDrawPoints[color=red](I,J) \tkzDrawLine(I,J) @@ -325,7 +325,7 @@ So the arguments are two couples which define two circles with a center and a po \subsubsection{test circle-circle intersection} \begin{tkzexample}[latex=7cm,small] -\begin{tikzpicture}[scale=1] +\begin{tikzpicture}[scale=.75] \tkzDefPoints{% x y name 0 /0 /A, 2 /0 /B, @@ -362,23 +362,24 @@ The idea is to compare the angles formed with the first center, a resultant poin As you can see $\widehat{ODB} < \widehat{OBE} $ \begin{tkzexample}[latex=7cm,small] - \begin{tikzpicture}[scale=.5] - \pgfkeys{/pgf/number format/.cd,fixed relative,precision=4} - \tkzDefPoints{0/0/O,5/-1/A,2/2/B,2/-1/C} - \tkzDrawPoints(O,A,B) - \tkzDrawCircles(O,A B,C) - \tkzInterCC(O,A)(B,C)\tkzGetPoints{D}{E} - \tkzDrawPoints(C,D,E) - \tkzLabelPoints(O,A,B,C,D,E) - \tkzDrawSegments[cyan](D,O D,B) - \tkzMarkAngle[red,->,size=1.5](O,D,B) - \tkzFindAngle(O,D,B) \tkzGetAngle{an} - \tkzLabelAngle(O,D,B){$ \pgfmathprintnumber{\an}$} - \tkzDrawSegments[cyan](E,O E,B) - \tkzMarkAngle[red,->,size=1.5](O,E,B) - \tkzFindAngle(O,E,B) \tkzGetAngle{an} - \tkzLabelAngle(O,E,B){$ \pgfmathprintnumber{\an}$} - \end{tikzpicture} +\begin{tikzpicture}[scale=.5] + \pgfkeys{/pgf/number format/.cd,fixed relative,precision=4} + \tkzDefPoints{0/0/O,5/-1/A,2/2/B,2/-1/C} + \tkzDrawPoints(O,A,B) + \tkzDrawCircles(O,A B,C) + \tkzInterCC(O,A)(B,C)\tkzGetPoints{D}{E} + \tkzDrawPoints(C,D,E) + \tkzLabelPoints(O,A,B,C) + \tkzLabelPoints[above](D,E) + \tkzDrawSegments[cyan](D,O D,B) + \tkzMarkAngle[red,->,size=1.5](O,D,B) + \tkzFindAngle(O,D,B) \tkzGetAngle{an} + \tkzLabelAngle(O,D,B){$ \pgfmathprintnumber{\an}$} + \tkzDrawSegments[cyan](E,O E,B) + \tkzMarkAngle[red,->,size=1.5](O,E,B) + \tkzFindAngle(O,E,B) \tkzGetAngle{an} + \tkzLabelAngle(O,E,B){$ \pgfmathprintnumber{\an}$} +\end{tikzpicture} \end{tkzexample} @@ -466,7 +467,7 @@ $\widehat{A,C,B}$ is a clockwise angle \tkzDrawPoint(O) \tkzDrawCircles[new](M3,D B,M2 D,O) \tkzDrawCircle(O,A) - \tkzLabelPoints(A,B,C,D,E,M1,M2,M3,O,L) + \tkzLabelPoints[below right](A,B,C,D,E,M1,M2,M3,O,L) \end{tikzpicture} \end{tkzexample} @@ -478,11 +479,11 @@ $\widehat{A,C,B}$ is a clockwise angle \begin{tkzexample}[vbox,small] \begin{tikzpicture} \tkzDefPoints{0/0/P,5/0/Q,3/2/I} - \tkzDefCircleBy[orthogonal from=P](Q,I) + \tkzDefCircle[orthogonal from=P](Q,I) \tkzGetFirstPoint{E} \tkzDrawCircles(P,E Q,E) \tkzInterCC[common=E](P,E)(Q,E) \tkzGetFirstPoint{F} - \tkzDefPointOnCircle[through = angle 80 center P point E] + \tkzDefPointOnCircle[through = center P angle 80 point E] \tkzGetPoint{A} \tkzInterLC[common=E](A,E)(Q,E) \tkzGetFirstPoint{C} \tkzInterLL(A,F)(C,Q) \tkzGetPoint{D} @@ -490,7 +491,10 @@ $\widehat{A,C,B}$ is a clockwise angle \tkzDrawLines[add=0 and 2](A,E) \tkzDrawSegments(P,E E,F F,C A,F C,D) \tkzDrawPoints(P,Q,E,F,A,C,D) - \tkzLabelPoints(P,Q,E,F,A,C,D) + \tkzLabelPoints(P,Q,F) + \tkzLabelPoints[above](E,A) + \tkzLabelPoints[left](D) + \tkzLabelPoints[above right](C) \end{tikzpicture} \end{tkzexample} diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-labelling.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-labelling.tex index b7bbbeb5b7..4fbe35123c 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-labelling.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-labelling.tex @@ -3,7 +3,6 @@ \hypertarget{tlp}{} It is possible to add several labels at the same point by using this macro several times. - \begin{NewMacroBox}{tkzLabelPoint}{\oarg{local options}\parg{point}\var{label}}% \begin{tabular}{lll}% arguments & example & \\ @@ -70,7 +69,6 @@ This macro reduces the number of lines of code, but it is not obvious that all p \tkzLabelPoints(A,B,C) \end{tikzpicture} \end{tkzexample} - %<---------------------------------------------------------------------------> % tkzAutoLabelPoints %<---------------------------------------------------------------------------> @@ -97,7 +95,7 @@ Here the points are positioned relative to the center of gravity of $A,B,C \text \tkzDrawSegments(C,B B,A A,O O,C) \tkzDefCentroid(A,B,C,O) \tkzDrawPoint(tkzPointResult) - \tkzAutoLabelPoints[center=tkzPointResult, dist=.3,red](O,A,B,C) + \tkzLabelPoints(O,A,C,B) \end{tikzpicture} \end{tkzexample} @@ -144,7 +142,7 @@ options & default & definition \\ \tkzDefPointWith[orthogonal normed,K=4](I,A) \tkzGetPoint{H} \tkzDefMidPoint(O,A) \tkzGetPoint{M} - \tkzInterLC(I,H)(M,A)\tkzGetPoints{C}{B} + \tkzInterLC(I,H)(M,A)\tkzGetPoints{B}{C} \tkzDrawSegments[color=white,line width=1pt](I,H O,A) \tkzDrawPoints[color=white](O,I,A,B,M) \tkzMarkRightAngle[color=white,line width=1pt](A,I,B) @@ -159,7 +157,7 @@ options & default & definition \\ \subsubsection{Labels and option : \tkzname{swap}} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[rotate=-60] -\tkzSetUpStyle[red,auto]{label seg style} +\tkzSetUpStyle[red,auto]{label style} \tkzDefPoint(0,1){A} \tkzDefPoint(2,4){C} \tkzDefPointWith[orthogonal normed,K=7](C,A) @@ -200,7 +198,6 @@ The arguments are a two-point couple list. The styles of \TIKZ\ are available fo \end{tikzpicture} \end{tkzexample} - \section{Add labels on a straight line \tkzcname{tkzLabelLine}}% \begin{NewMacroBox}{tkzLabelLine}{\oarg{local options}\parg{pt1,pt2}\marg{label}} @@ -277,8 +274,7 @@ It is possible to move the label with all TikZ options : rotate, shift, below, e \end{tikzpicture} \end{tkzexample} - -\subsubsection{Example with \tkzname{pos}} +\subsubsection{With \tkzname{pos}} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.75] \tkzDefPoints{0/0/O,5/0/A,3/4/B} @@ -291,6 +287,7 @@ It is possible to move the label with all TikZ options : rotate, shift, below, e \end{tikzpicture} \end{tkzexample} +\subsubsection{\tkzname{pos} and \tkzcname{tkzLabelAngles}} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[rotate=30] \tkzDefPoint(2,1){S} @@ -317,7 +314,6 @@ It is possible to move the label with all TikZ options : rotate, shift, below, e \end{tkzexample} - \begin{NewMacroBox}{tkzLabelAngles}{\oarg{local options}\parg{A,O,B}\parg{A',O',B'}etc.}% With common options, there is a macro for multiple angles. \end{NewMacroBox} @@ -325,17 +321,16 @@ With common options, there is a macro for multiple angles. It finally remains to be able to give a label to designate a circle and if several possibilities are offered, we will see here \tkzcname{tkzLabelCircle}. \subsection{Giving a label to a circle} -\begin{NewMacroBox}{tkzLabelCircle}{\oarg{local options}\parg{A,B}\parg{angle}\marg{label}}% +\begin{NewMacroBox}{tkzLabelCircle}{\oarg{tikz options}\parg{O,A}\parg{angle}\marg{label}}% \begin{tabular}{lll}% options & default & definition \\ \midrule -\TOline{radius} {radius}{circle characterized by two points defining a radius} -\TOline{R} {radius}{circle characterized by a point and the measurement of a radius } +\TOline{tikz options} {}{circle $O$ center through $A$} \bottomrule \end{tabular} \medskip -You don't need to put \tkzname{radius} because that's the default option. We can use the styles from \TIKZ. The label is created and therefore "passed" between braces. +\emph{ We can use the styles from \TIKZ. The label is created and therefore "passed" between braces.} \end{NewMacroBox} \subsubsection{Example} @@ -351,8 +346,8 @@ You don't need to put \tkzname{radius} because that's the default option. We can \tkzLabelCircle[above=4pt](O,N)(120){$\mathcal{C}$} \tkzDrawCircle(O,M) \tkzFillCircle[color=blue!10,opacity=.4](O,M) - \tkzLabelCircle[R,draw, - text width=2cm,text centered](O,3)(-60)% + \tkzLabelCircle[draw, + text width=2cm,text centered,left=24pt](O,M)(-120)% {The circle\\ $\mathcal{C}$} \tkzDrawPoints(M,P)\tkzLabelPoints[right](M,P) \end{tikzpicture} @@ -367,7 +362,7 @@ This macro allows you to place a label along an arc. The options are those of \T \begin{tabular}{lll}%% argument & example & definition \\ \midrule -\TAline{label}{\tkzcname{tkzLabelSegment(A,B)\{$5$\}}}{label text} +\TAline{label}{\tkzcname{tkzLabelArc(A,B)\{$5$\}}}{label text} \TAline{(pt1,pt2,pt3)}{(O,A,B)}{label along the arc $\widearc{AB}$} \bottomrule \end{tabular} @@ -393,4 +388,5 @@ options & default & definition \\ \tkzLabelPoints(A,B,O) \end{tikzpicture} \end{tkzexample} + \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-lines.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-lines.tex index d7e852340e..cc4177dd9f 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-lines.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-lines.tex @@ -2,7 +2,6 @@ It is of course essential to draw straight lines, but before this can be done, it is necessary to be able to define certain particular lines such as mediators, bisectors, parallels or even perpendiculars. The principle is to determine two points on the straight line. - \subsection{Definition of straight lines} \begin{NewMacroBox}{tkzDefLine}{\oarg{local options}\parg{pt1,pt2} or \parg{pt1,pt2,pt3}}% @@ -14,8 +13,11 @@ I used the term "mediator" to designate the perpendicular bisector line at the m \toprule arguments & example & explanation \\ \midrule -\TAline{\parg{pt1,pt2}}{\parg{A,B}} {[mediator](A,B)} -\TAline{\parg{pt1,pt2,pt3}}{\parg{A,B,C}} {[bisector](B,A,C)} +\TAline{\parg{pt1,pt2}}{[mediator]\parg{A,B}}{mediator of the segment $[A,B]$} +\TAline{\parg{pt1,pt2,pt3}}{[bisector]\parg{A,B,C}} {bisector of $\widehat{ABC}$} +\TAline{\parg{pt1,pt2,pt3}}{[altitude]\parg{A,B,C}} {altitude from $B$} +\TAline{\parg{pt1}}{[tangent at=A]\parg{O}} {tangent at $A$ on the circle center $O$} +\TAline{\parg{pt1,pt2}}{[tangent from=A]\parg{O,B}} {circle center $O$ through $B$} \end{tabular} \medskip @@ -27,13 +29,18 @@ options & default & definition \\ \TOline{orthogonal=through\dots}{mediator}{see above } \TOline{parallel=through\dots}{mediator}{parallel to a straight line passing through a point} \TOline{bisector}{mediator}{bisector of an angle defined by three points} -\TOline{bisector out}{mediator}{Exterior Angle Bisector} +\TOline{bisector out}{mediator}{exterior angle bisector} +\TOline{symmedian}{mediator}{symmedian from a vertex } +\TOline{altitude}{mediator}{altitude from avertex} +\TOline{euler}{mediator}{euler line of a triangle } +\TOline{tangent at}{mediator}{tangent at a point of a circle } +\TOline{tangent from}{mediator}{tangent from an exterior point } \TOline{K}{1}{coefficient for the perpendicular line} \TOline{normed}{false}{normalizes the created segment} \end{tabular} \end{NewMacroBox} -\subsubsection{Example with \tkzname{mediator}} +\subsubsection{With \tkzname{mediator}} \begin{tkzexample}[latex=5 cm,small] \begin{tikzpicture}[rotate=25] \tkzDefPoints{-2/0/A,1/2/B} @@ -48,7 +55,48 @@ options & default & definition \\ \end{tikzpicture} \end{tkzexample} -\subsubsection{Example with \tkzname{bisector} and \tkzname{normed}} +\subsubsection{An envelope with option \tkzname{mediator}} +Based on a figure from O. Reboux with pst-eucl by D Rodriguez. + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[scale=.6] + % necessary +\tkzInit[xmin=-6,ymin=-4,xmax=6,ymax=6] +\tkzClip +\tkzSetUpLine[thin,color=magenta] +\tkzDefPoint(0,0){O} +\tkzDefPoint(132:4){A} +\tkzDefPoint(5,0){B} +\foreach \ang in {5,10,...,360}{% + \tkzDefPoint(\ang:5){M} + \tkzDefLine[mediator](A,M) + \tkzGetPoints{x}{y} + \tkzDrawLine[add= 3 and 3](x,y)} +\end{tikzpicture} +\end{tkzexample} + + +\subsubsection{A parabola with option \tkzname{mediator}} +Based on a figure from O. Reboux with pst-eucl by D Rodriguez. +It is not necessary to name the two points that define the mediator. + +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[scale=.6] +\tkzInit[xmin=-6,ymin=-4,xmax=6,ymax=6] +\tkzClip +\tkzSetUpLine[thin,color=teal] +\tkzDefPoint(0,0){O} +\tkzDefPoint(132:5){A} +\tkzDefPoint(4,0){B} +\foreach \ang in {5,10,...,360}{% + \tkzDefPoint(\ang:4){M} + \tkzDefLine[mediator](A,M) + \tkzGetPoints{x}{y} + \tkzDrawLine[add= 3 and 3](x,y)} +\end{tikzpicture} +\end{tkzexample} + +\subsubsection{With options \tkzname{bisector} and \tkzname{normed}} \begin{tkzexample}[latex=7 cm,small] \begin{tikzpicture}[rotate=25,scale=.75] \tkzDefPoints{0/0/C, 2/-3/A, 4/0/B} @@ -59,7 +107,27 @@ options & default & definition \\ \end{tikzpicture} \end{tkzexample} -\subsubsection{Example with \tkzname{orthogonal} and \tkzname{parallel}} +\subsubsection{With option \tkzname{parallel=through}} % (fold) +\label{ssub:parallel} +Archimedes' Book of Lemmas proposition 1 + +\begin{tkzexample}[latex=7cm,small] + \begin{tikzpicture}[scale=.75] + \tkzDefPoints{0/0/O_1,0/1/O_2,0/3/A} + \tkzDefPoint(15:3){F} + \tkzInterLC(F,O_1)(O_1,A) \tkzGetSecondPoint{E} + \tkzDefLine[parallel=through O_2](E,F) \tkzGetPoint{x} + \tkzInterLC(x,O_2)(O_2,A) \tkzGetPoints{D}{C} + \tkzDrawCircles(O_1,A O_2,A) + \tkzDrawSegments[new](O_1,A E,F C,D) + \tkzDrawSegments[purple](A,E A,F) + \tkzDrawPoints(A,O_1,O_2,E,F,C,D) + \tkzLabelPoints(A,O_1,O_2,E,F,C,D) + \end{tikzpicture} +\end{tkzexample} +% subsubsection parallel (end) + +\subsubsection{With option \tkzname{orthogonal} and \tkzname{parallel}} \begin{tkzexample}[latex=5 cm,small] \begin{tikzpicture} \tkzDefPoints{-1.5/-0.25/A,1/-0.75/B,-0.7/1/C} @@ -78,71 +146,43 @@ options & default & definition \\ \end{tikzpicture} \end{tkzexample} -\subsubsection{An envelope} -Based on a figure from O. Reboux with pst-eucl by D Rodriguez. - -\begin{tkzexample}[vbox,small] -\begin{tikzpicture}[scale=.75] - \tkzInit[xmin=-6,ymin=-4,xmax=6,ymax=6] % necessary - \tkzClip - \tkzDefPoint(0,0){O} - \tkzDefPoint(132:4){A} - \tkzDefPoint(5,0){B} - \foreach \ang in {5,10,...,360}{% - \tkzDefPoint(\ang:5){M} - \tkzDefLine[mediator](A,M) - \tkzDrawLine[color=magenta,add= 3 and 3](tkzFirstPointResult,tkzSecondPointResult)} +\subsubsection{With option \tkzname{altitude}} % (fold) +\label{sub:altitude} +\begin{tkzexample}[latex=7 cm,small] +\begin{tikzpicture} +\tkzDefPoints{0/0/A,6/0/B,0.8/4/C} +\tkzDefLine[altitude](A,B,C) \tkzGetPoint{b} +\tkzDefLine[altitude](B,C,A) \tkzGetPoint{c} +\tkzDefLine[altitude](B,A,C) \tkzGetPoint{a} +\tkzDrawPolygon(A,B,C) +\tkzDrawPoints[blue](a,b,c) +\tkzDrawSegments[blue](A,a B,b C,c) +\tkzLabelPoints(A,B,c) +\tkzLabelPoints[above](C,a) +\tkzLabelPoints[above left](b) \end{tikzpicture} \end{tkzexample} -\subsubsection{A parabola} -Based on a figure from O. Reboux with pst-eucl by D Rodriguez. -It is not necessary to name the two points that define the mediator. +% subsection altitude (end) -\begin{tkzexample}[vbox,small] -\begin{tikzpicture}[scale=.75] - \tkzInit[xmin=-6,ymin=-4,xmax=6,ymax=6] - \tkzClip - \tkzDefPoint(0,0){O} - \tkzDefPoint(132:5){A} - \tkzDefPoint(4,0){B} - \foreach \ang in {5,10,...,360}{% - \tkzDefPoint(\ang:4){M} - \tkzDefLine[mediator](A,M) - \tkzDrawLine[color=teal,add= 3 and 3](tkzFirstPointResult,tkzSecondPointResult)} + +\subsubsection{ With option \tkzname{euler}} % (fold) +\label{sub:eulerline} +\begin{tkzexample}[latex=7 cm,small] +\begin{tikzpicture} +\tkzDefPoints{0/0/A,6/0/B,0.8/4/C} +\tkzDefLine[euler](A,B,C) \tkzGetPoints{h}{e} +\tkzDefTriangleCenter[circum](A,B,C) \tkzGetPoint{o} +\tkzDrawPolygon[teal](A,B,C) +\tkzDrawPoints[red](A,B,C,h,e,o) +\tkzDrawLine[add= 2 and 2](h,e) +\tkzLabelPoints(A,B,C,h,e,o) +\tkzLabelPoints[above](C) \end{tikzpicture} \end{tkzexample} +% subsection eulerline (end) -%<----------------------------------------------------------------------------> -\subsection{Specific lines: Tangent to a circle} -Two constructions are proposed. The first one is the construction of a tangent to a circle at a given point of this circle and the second one is the construction of a tangent to a circle passing through a given point outside a disc. - -\begin{NewMacroBox}{tkzDefTangent}{\oarg{local options}\parg{pt1,pt2} or \parg{pt1,dim}}% -The parameter in brackets is the center of the circle or the center of the circle and a point on the circle or the center and the radius. This macro replaces the old one: \tkzcname{tkzTangent}. - -\medskip -\begin{tabular}{lll}% -\toprule -arguments & example & explanation \\ -\midrule -\TAline{\parg{pt1,pt2 or \parg{pt1,dim}} }{\parg{A,B} or \parg{A,2cm}} {$[AB]$ is radius $A$ is the center} -\bottomrule -\end{tabular} - -\medskip -\begin{tabular}{lll}% -options & default & definition \\ -\midrule -\TOline{at=pt}{at}{tangent to a point on the circle} -\TOline{from=pt} {at}{tangent to a circle passing through a point} -\TOline{from with R=pt} {at}{idem, but the circle is defined by center = radius} -\bottomrule -\end{tabular} - -The tangent is not drawn. With option \tkzname{at}, a point of the tangent is given by \tkzname{tkzPointResult}. With option \tkzname{from} you get two points of the circle with \tkzname{tkzFirstPointResult} and \tkzname{tkzSecondPointResult}. You can choose between these two points by comparing the angles formed with the outer point, the contact point and the center. The two possible angles have different directions. Angle counterclockwise refers to \tkzname{tkzFirstPointResult}. -\end{NewMacroBox} - -\subsubsection{Example of a tangent passing through a point on the circle } +\subsubsection{Tangent passing through a point on the circle \tkzname{tangent at}} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.75] \tkzDefPoint(0,0){O} @@ -151,22 +191,22 @@ The tangent is not drawn. With option \tkzname{at}, a point of the tangent is g \tkzGetPoint{A} \tkzDrawSegment(O,A) \tkzDrawCircle(O,A) - \tkzDefTangent[at=A](O) + \tkzDefLine[tangent at=A](O) \tkzGetPoint{h} \tkzDrawLine[add = 4 and 3](A,h) \tkzMarkRightAngle[fill=teal!30](O,A,h) \end{tikzpicture} \end{tkzexample} -\subsubsection{Choice of contact point with tangents passing through an external point} +\subsubsection{Choice of contact point with tangents passing through an external point option \tkzname{tangent from}} + +The tangent is not drawn. With option \tkzname{at}, a point of the tangent is given by \tkzname{tkzPointResult}. With option \tkzname{from} you get two points of the circle with \tkzname{tkzFirstPointResult} and \tkzname{tkzSecondPointResult}. You can choose between these two points by comparing the angles formed with the outer point, the contact point and the center. The two possible angles have different directions. Angle counterclockwise refers to \tkzname{tkzFirstPointResult}. + \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=1,rotate=-30] -\tkzDefPoints{ %x y name - 0 /0 /Q, - 0 /2 /A, - 6 /-1 /O} -\tkzDefTangent[from = O](Q,A) \tkzGetPoints{R}{S} -\tkzInterLC[near](O,Q)(Q,A) \tkzGetPoints{M}{N} +\tkzDefPoints{0/0/Q,0/2/A,6/-1/O} +\tkzDefLine[tangent from = O](Q,A) \tkzGetPoints{R}{S} +\tkzInterLC[near](O,Q)(Q,A) \tkzGetPoints{M}{N} \tkzDrawCircle(Q,M) \tkzDrawSegments[new,add = 0 and .2](O,R O,S) \tkzDrawSegments[gray](N,O R,Q S,Q) @@ -182,9 +222,6 @@ The tangent is not drawn. With option \tkzname{at}, a point of the tangent is g \end{tikzpicture} \end{tkzexample} - - - \subsubsection{Example of tangents passing through an external point } \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.8] @@ -194,7 +231,7 @@ The tangent is not drawn. With option \tkzname{at}, a point of the tangent is g \foreach \an in {0,10,...,350}{ \tkzDefPointBy[rotation=center c angle \an](a0) \tkzGetPoint{a} - \tkzDefTangent[from = a](c,d) + \tkzDefLine[tangent from = a](c,d) \tkzGetPoints{e}{f} \tkzDrawLines(a,f a,e) \tkzDrawSegments(c,e c,f)} @@ -202,27 +239,28 @@ The tangent is not drawn. With option \tkzname{at}, a point of the tangent is g \end{tkzexample} \subsubsection{Example of Andrew Mertz} + \begin{tkzexample}[latex=6cm,small] - \begin{tikzpicture}[scale=.5] + \begin{tikzpicture}[scale=.6] \tkzDefPoint(100:8){A}\tkzDefPoint(50:8){B} \tkzDefPoint(0,0){C} \tkzDefPoint(0,-4){R} \tkzDrawCircle(C,R) - \tkzDefTangent[from = A](C,R) \tkzGetPoints{D}{E} - \tkzDefTangent[from = B](C,R) \tkzGetPoints{F}{G} + \tkzDefLine[tangent from = A](C,R) \tkzGetPoints{D}{E} +\tkzDefLine[tangent from = B](C,R) \tkzGetPoints{F}{G} \tkzDrawSector[fill=teal!20,opacity=0.5](A,E)(D) \tkzFillSector[color=teal,opacity=0.5](B,G)(F) \end{tikzpicture} \end{tkzexample} \url{http://www.texample.net/tikz/examples/} -\subsubsection{Drawing a tangent option \tkzimp{from}} +\subsubsection{Drawing a tangent option \tkzname{tangent from}} \begin{tkzexample}[latex=6cm,small] -\begin{tikzpicture}[scale=.5] +\begin{tikzpicture}[scale=.6] \tkzDefPoint(0,0){B} \tkzDefPoint(0,8){A} \tkzDefSquare(A,B) \tkzGetPoints{C}{D} - \tkzDrawSquare(A,B) + \tkzDrawPolygon(A,B,C,D) \tkzClipPolygon(A,B,C,D) \tkzDefPoint(4,8){F} \tkzDefPoint(4,0){E} @@ -230,7 +268,7 @@ The tangent is not drawn. With option \tkzname{at}, a point of the tangent is g \tkzFillPolygon[color = green](A,B,C,D) \tkzDrawCircle[fill = orange](B,A) \tkzDrawCircle[fill = purple](E,B) - \tkzDefTangent[from=B](F,A) + \tkzDefLine[tangent from = B](F,A) \tkzInterLL(F,tkzSecondPointResult)(C,D) \tkzInterLL(A,tkzPointResult)(F,E) \tkzDrawCircle[fill = yellow](tkzPointResult,Q) diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-main.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-main.tex index 1d59e074f4..29130c5564 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-main.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-main.tex @@ -17,26 +17,27 @@ fontsize = 10, index = totoc, twoside, - headings = small, - cadre + cadre, + headings = small ]{tkz-doc} %\usepackage{etoc} \gdef\tkznameofpack{tkz-euclide} -\gdef\tkzversionofpack{4.05b} -\gdef\tkzdateofpack{2022/02/07} +\gdef\tkzversionofpack{4.2c} +\gdef\tkzdateofpack{\today} \gdef\tkznameofdoc{doc-tkz-euclide} -\gdef\tkzversionofdoc{4.05b} -\gdef\tkzdateofdoc{2022/02/07} +\gdef\tkzversionofdoc{4.2c} +\gdef\tkzdateofdoc{\today} \gdef\tkzauthorofpack{Alain Matthes} \gdef\tkzadressofauthor{} \gdef\tkznamecollection{AlterMundus} \gdef\tkzurlauthor{http://altermundus.fr} \gdef\tkzengine{lualatex} \gdef\tkzurlauthorcom{http://altermundus.fr} +\nameoffile{\tkznameofpack} % -- Packages --------------------------------------------------- \usepackage[dvipsnames,svgnames]{xcolor} \usepackage{calc} -\usepackage{tkz-euclide} +\usepackage{tkz-base,tkz-euclide,pgfornament} \usetikzlibrary{backgrounds} \usepackage[colorlinks,pdfencoding=auto, psdextra]{hyperref} \hypersetup{ @@ -86,128 +87,38 @@ %\usepackage{unicode-math} \usepackage[math-style=literal,bold-style=literal]{unicode-math} \usepackage{fourier-otf} -\makeatletter -\if@tkzcadre \usepackage{zorna} \fi -\makeatother -\usepackage{datetime,multicol,lscape} +\let\rmfamily\ttfamily +\usepackage{multicol,lscape} \usepackage[english]{babel} \usepackage[normalem]{ulem} -\usepackage{array,multirow,multido,booktabs} +\usepackage{multirow,multido,booktabs,cellspace} \usepackage{shortvrb,fancyvrb,bookmark} - -\renewcommand{\labelitemi}{--} -\setlength\parindent{0pt} -\RedeclareSectionCommand[tocnumwidth=3.5em]{part} -\RedeclareSectionCommand[tocnumwidth=3.5em]{section} -\RedeclareSectionCommand[tocnumwidth=3.5em]{subsection} -\RedeclareSectionCommand[tocnumwidth=3.5em]{subsubsection} -\renewcommand\partheadstartvskip{\clearpage\null\vfil} -\renewcommand\partheadmidvskip{\par\nobreak\vskip 20pt\thispagestyle{empty}} -\renewcommand\partheadendvskip{\vfil\clearpage} -\renewcommand\raggedpart{\centering} -\RequirePackage{makeidx} +\usepackage{makeidx} \makeindex -% \def\tkzref{\arabic{section}-\arabic{subsection}-\arabic{subsubsection}} -% \renewenvironment{tkzexample}[1][]{% -% \tkz@killienc \VerbatimOut{tkzeuclide-\tkzref.tex}% -% }{% -% \endVerbatimOut -% } -%<---------------------------------------------------------------------------> -\AtBeginDocument{\MakeShortVerb{\|}} % link to shortvrb -\makeatletter -% We need to save the node -% Every append after command might be useful to have this code -\def\savelastnode{\pgfextra\edef\tmpA{\tikzlastnode}\endpgfextra} -\def\restorelastnode{\pgfextra\edef\tikzlastnode{\tmpA}\endpgfextra} -% Define box and box title style -\tikzstyle{mybox} = [draw=blue!50!black, very thick, - rectangle, rounded corners, inner sep=10pt, inner ysep=20pt,text=darkgray] -\tikzstyle{fancytitle} =[fill=MidnightBlue!20, text=blue!50!black,rounded corners] -\tikzstyle{title} = [append after command={% - \savelastnode node[fancytitle,right=10pt] at (\tikzlastnode.north west)% - {#1}\restorelastnode}] -\makeatother - -\newcommand{\red}{\color{BrickRed}} -\newcommand{\orange}{\color{PineGreen}} -\newcommand{\blanc}{\color{White}} -\newcommand{\ntt}{\normalfont\ttfamily} -% command name -\newcommand{\cn}[1]{{\protect\ntt\bslash#1}} -% LaTeX package name -% File name -\newcommand{\fn}[1]{{\protect\ntt#1}} -% environment name -\newcommand{\env}[1]{{\protect\ntt#1}} -\hfuzz1pc % Don't bother to report overfull boxes if overage is < 1pc - -\newcommand{\pkg}[1]{{\protect\ntt#1}} - -% settings +%<---------------------------------------------------------------------------> +% settings styles \tkzSetUpColors[background=white,text=black] -\tkzSetUpCompass[color=orange, line width=.4pt,delta=10] -\tkzSetUpArc[color=gray,line width=.4pt] +\tkzSetUpCompass[color=orange, line width=.2pt,delta=10] +\tkzSetUpArc[color=gray,line width=.2pt] \tkzSetUpPoint[size=2,color=teal] -\tkzSetUpLine[line width=.4pt,color=teal] -\tkzSetUpStyle[color=orange,ultra thin]{new} -\tikzset{every picture/.style={line width=.4pt}} -\tikzset{label angle style/.append style={color=teal,font=\footnotesize}} -\tikzset{new/.style={color=orange,ultra thin}} -%\tikzset{label style/.append style={color=teal,font=\footnotesize}} - -\newcommand{\tkzsubf}[2]{% - {\small\begin{tabular}[t]{@{}c@{}} - #1\\#2 - \end{tabular}}% -} - +\tkzSetUpLine[line width=.2pt,color=teal] +\tkzSetUpStyle[color=orange,line width=.2pt]{new} +\tikzset{every picture/.style={line width=.2pt}} +\tikzset{label angle style/.append style={color=teal,font=\footnotesize}} +\tikzset{label style/.append style={below,color=teal,font=\scriptsize}} +\tikzset{new/.style={color=orange,line width=.2pt}} +\AtBeginDocument{\MakeShortVerb{\|}} % link to shortvrb \begin{document} - \parindent=0pt -\author{\tkzauthorofpack} -\title{\tkznameofpack} -\date{\today} +\tkzTitleFrame{tkz-euclide\\Euclidean Geometry} \clearpage -\thispagestyle{empty} -\maketitle -\null -\makeatletter -\if@tkzcadre -\AddToShipoutPicture*{% -\setlength\unitlength{1mm} -\put(70,120){% -\begin{tikzpicture} - \node at (30pt,30pt){\fontsize{60}{60}\selectfont \zorna{c}}; - \node at (270pt,30pt){\fontsize{60}{60}\selectfont \zorna{d}}; - \node at (30pt,210pt){\fontsize{60}{60}\selectfont \zorna{a}}; - \node at (270pt,210pt){\fontsize{60}{60}\selectfont \zorna{b}}; - \draw[line width=2pt,double,color=MidnightBlue, - fill=myblue!10,opacity=.5] (0,0) rectangle (300pt,240pt); - \node[text width=240pt] at (150 pt,120 pt){% - \begin{center} - \color{MidnightBlue} - \fontsize{24}{48} - \selectfont tkz-euclide\\ - tool for \\ - Euclidean Geometry - \end{center}}; -\end{tikzpicture}} -} -\else -\fi -\makeatother -\clearpage -\tkzSetUpColors[background=white,text=darkgray] - -\let\rmfamily\ttfamily -\nameoffile{\tkznameofpack} \defoffile{\lefthand\ -\tkzname{\tkznameofpack} 4.00 is now independent of tkz-base. It is a set of convenient macros for drawing in a plane (fundamental two-dimensional object) with a Cartesian coordinate system. It handles the most classic situations in Euclidean Geometry. \tkzname{\tkznameofpack} is built on top of PGF and its associated front-end \TIKZ\ and is a (La)TeX-friendly drawing package. The aim is to provide a high-level user interface to build graphics relatively simply. The idea is to allow you to follow step by step a construction that would be done by hand as naturally as possible.\\ +From version 4.00, \tkzname{\tkznameofpack} became independent from \tkzname{tkz-base} . This has implied some changes : the next major step will be the version 5 which will see the introduction of Lua. To prepare for this change, I removed the last macros that allowed to plot and define at the same time. Indeed Lua will be there to make all the calculations and define all the necessary nodes. As for \TIKZ\ , it will remain to carry out the tracings, the markings and the labels.\\ +\tkzname{\tkznameofpack} is a set of convenient macros for drawing in a plane (fundamental two-dimensional object) with a Cartesian coordinate system. It handles the most classic situations in Euclidean Geometry. \tkzname{\tkznameofpack} is built on top of PGF and its associated front-end \TIKZ\ and is a (La)TeX-friendly drawing package. The aim is to provide a high-level user interface to build graphics relatively simply. The idea is to allow you to follow step by step a construction that would be done by hand as naturally as possible.\\ English is not my native language so there might be some errors. } @@ -240,53 +151,53 @@ Project Public License Distributed from \href{http://www.ctan.org/}{CTAN}\ arch \newpage \part{General survey : a brief but comprehensive review} -\include{TKZdoc-euclide-installation} -\include{TKZdoc-euclide-presentation} -\include{TKZdoc-euclide-elements} -\include{TKZdoc-euclide-news} - +\input{TKZdoc-euclide-news.tex} +\input{TKZdoc-euclide-installation.tex} +\input{TKZdoc-euclide-presentation.tex} +\input{TKZdoc-euclide-elements.tex} +\input{TKZdoc-euclide-documentation.tex} \part{Setting} -\include{TKZdoc-euclide-points} +\input{TKZdoc-euclide-points.tex} \part{Calculating} -\include{TKZdoc-euclide-pointsSpc} -\include{TKZdoc-euclide-pointby} -\include{TKZdoc-euclide-pointwith} -\include{TKZdoc-euclide-lines} -\include{TKZdoc-euclide-triangles} -\include{TKZdoc-euclide-polygons} -\include{TKZdoc-euclide-circles} -\include{TKZdoc-euclide-circleby} -\include{TKZdoc-euclide-intersec} -\include{TKZdoc-euclide-angles} -\include{TKZdoc-euclide-rnd} +\input{TKZdoc-euclide-pointsSpc.tex} +\input{TKZdoc-euclide-pointby.tex} +\input{TKZdoc-euclide-pointwith.tex} +\input{TKZdoc-euclide-lines.tex} +\input{TKZdoc-euclide-triangles.tex} +\input{TKZdoc-euclide-polygons} +\input{TKZdoc-euclide-circles.tex} +\input{TKZdoc-euclide-circleby.tex} +\input{TKZdoc-euclide-intersection.tex} +\input{TKZdoc-euclide-angles.tex} +\input{TKZdoc-euclide-rnd.tex} \part{Drawing and Filling} -\include{TKZdoc-euclide-drawing} -\include{TKZdoc-euclide-filling} -\include{TKZdoc-euclide-clipping} +\input{TKZdoc-euclide-drawing.tex} +\input{TKZdoc-euclide-filling.tex} +\input{TKZdoc-euclide-clipping.tex} \part{Marking} -\include{TKZdoc-euclide-marking} +\input{TKZdoc-euclide-marking.tex} \part{Labelling} -\include{TKZdoc-euclide-labelling} +\input{TKZdoc-euclide-labelling.tex} \part{Complements} -\include{TKZdoc-euclide-compass} -\include{TKZdoc-euclide-show} -\include{TKZdoc-euclide-rapporteur} -\include{TKZdoc-euclide-tools} +\input{TKZdoc-euclide-compass.tex} +\input{TKZdoc-euclide-show.tex} +\input{TKZdoc-euclide-rapporteur.tex} +\input{TKZdoc-euclide-tools.tex} \part{Working with style} -\include{TKZdoc-euclide-styles} +\input{TKZdoc-euclide-styles.tex} \part{Examples} -\include{TKZdoc-euclide-others} -\include{TKZdoc-euclide-examples} +\input{TKZdoc-euclide-others.tex} +\input{TKZdoc-euclide-examples.tex} \part{FAQ} -\include{TKZdoc-euclide-FAQ} +\input{TKZdoc-euclide-FAQ.tex} \clearpage\newpage \small\printindex diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-marking.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-marking.tex index 209aca27d9..c23d56a460 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-marking.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-marking.tex @@ -294,6 +294,7 @@ options & default & definition \\ \tkzDrawPoints(O,A,B) \end{tikzpicture} \end{tkzexample} + \MakeShortVerb{\|} \begin{NewMacroBox}{tkzMarkAngles}{\oarg{local options}\parg{A,O,B}\parg{A',O',B'}etc.}% With common options, there is a macro for multiple angles. @@ -355,7 +356,7 @@ options & default & definition \\ \tkzMarkRightAngle[german,size=.8,color=blue](B,H,C) \tkzFillAngle[opacity=.2,fill=blue!20,size=.8](B,H,C) \tkzLabelPoints(A,B,C,H) - \tkzDrawPoints(A,B,C) + \tkzDrawPoints(A,B,C,H) \end{tikzpicture} \end{tkzexample} @@ -395,4 +396,57 @@ options & default & definition \\ With common options, there is a macro for multiple angles. \end{NewMacroBox} +\subsection{Angles Library} % (fold) +\label{sub:angles_library} + +If you prefer to use \TIKZ\ library \tkzname{angles}, you can mark angles with the macro \tkzcname{tkzPicAngle} and \tkzcname{tkzPicRightAngle}. + +\begin{NewMacroBox}{tkzPicAngle}{\oarg{tikz options}\parg{A,O,B}}% + +\medskip +\begin{tabular}{lll}% +\toprule +options & example & definition \\ +\midrule +\TOline{tikz option}{see below}{drawing of the angle $\widehat{AOB}$.} +\end{tabular} +\end{NewMacroBox} + +\begin{NewMacroBox}{tkzPicRightAngle}{\oarg{tikz options}\parg{A,O,B}}% + +\medskip +\begin{tabular}{lll}% +\toprule +options & example & definition \\ +\midrule +\TOline{tikz option}{see below}{drawing of the right angle $\widehat{AOB}$.} +\end{tabular} + +\medskip +\emph{You need to know possible options of the \tkzname{angles} library} +\end{NewMacroBox} + +\subsubsection{Angle with \TIKZ} % (fold) +\label{ssub:angle_with_tikz} + + +\begin{tkzexample}[latex=7cm,small] + \begin{tikzpicture} + \tkzDefPoints{0/0/A,4/0/B} + \tkzDefTriangle[right,swap](A,B) \tkzGetPoint{C} + \tkzDrawPolygon(A,B,C) + \tkzDrawPoints(A,B,C) + \tkzLabelPoints[below](B,A) + \tkzLabelPoints[above right](C) + \tkzPicAngle["$\alpha$",draw=orange, + <->,angle eccentricity=1.2, + angle radius=1cm](B,A,C) + \tkzPicRightAngle[draw,red,thick, + angle eccentricity=.5, + pic text=.](C,B,A) + \end{tikzpicture} +\end{tkzexample} + +% subsubsection angle_with_tikz (end) +% subsection angles_library (end) \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-news.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-news.tex index 57bb41c3d3..438c869ddf 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-news.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-news.tex @@ -1,20 +1,129 @@ -\section{News and compatibility} +\section*{News and compatibility} + +\subsection{With 4.2 version} % (fold) +\label{sub:with_4_2_version} Some changes have been made to make the syntax more homogeneous and especially to distinguish the definition and search for coordinates from the rest, i.e. drawing, marking and labelling. -In the future, the definition macros being isolated, it will be easier to introduce a phase of coordinate calculations using \tkzimp{Lua}. +Now the definition macros are isolated, it will be easier to introduce a phase of coordinate calculations using \tkzimp{Lua}. + +Here are some of the changes. +\vspace{1cm} + \begin{itemize}\setlength{\itemsep}{10pt} + + +\item I recently discovered a problem when using the "scale" option. When plotting certain figures with certain tools, extensive use of |pgfmathreciprocal| involves small computational errors but can add up and render the figures unfit. Here is how to proceed to avoid these problems: +\begin{enumerate} + + \item On my side I introduced a patch proposed by Muzimuzhi that modifies +|pgfmathreciprocal|; + +\item Another idea proposed by Muzimuzhi is to pass as an option for the |tikzpicture| environment this |/pgf/fpu/install only={reciprocal}| after loading of course the |fpu| library; + +\item I have in the methods chosen to define my macros tried to avoid as much as possible the use of |pgfmathreciprocal|; + +\item There is still a foolproof method which consists in avoiding the use of |scale = ...|. It's quite easy if, like me, you only work with fixed points fixed at the beginning of your code. The size of your figure depends only on these fixed points so you just have to adapt the coordinates of these. +\end{enumerate} + +\item Now |\tkzDefCircle| gives two points as results: the center of the circle and a point of the circle. When a point of the circle is known, it is enough to use |\tkzGetPoint| or |\tkzGetFirstPoint| +to get the center, otherwise |\tkzGetPoints| will give you the center and a point of the circle. You can always get the length of the radius with |\tkzGetLength|. I wanted to favor working with nodes and banish the appearance of numbers in the code. + +\item In order to isolate the definitions, I deleted or modified certain macros which are: |\tkzDrawLine|, |\tkzDrawTriangle|, |\tkzDrawCircle|, |\tkzDrawSemiCircle| and |\tkzDrawRectangle|; + +Thus |\tkzDrawSquare(A,B)| becomes |\tkzDefSquare(A,B)||\tkzGetPoints{C}{D}| then + + |\tkzDrawPolygon(A,B,C,D)|; + +If you want to draw a circle, you can't do so |\tkzDrawCircle[R](A,1)|. First you have to define the point through which the circle passes, so you have to do +|\tkzDefCircle[R](A,1)| |\tkzGetPoint{a}| and finally |\tkzDrawCircle(A,a)|. Another possibilty is to define a point on the circle |\tkzDefShiftPoint[A](1,O){a}|; + + +\item The following macros |tkzDefCircleBy[orthogonal through]| and |\tkzDefCircleBy[orthogonal from]| become |tkzDefCircle[orthogonal through]| and |\tkzDefCircle[orthogonal from]| ; + + +\item |\tkzDefLine[euler](A,B,C)| is a macro that allows you to obtain the line of \tkzname{Euler} when possible. |\tkzDefLine[altitude](A,B,C)| is possible again, as well as |\tkzDefLine[tangent at=A](O)| and |\tkzDefLine[tangent from=P](O,A)| which did not works; + + +\item | \tkzDefTangent| is replaced by |\tkzDelLine[tangent from = ...]| or |\tkzDelLine[tangent at = ...]| + + +\item I added the macro |\tkzPicAngle[tikz options](A,B,C)| for those who prefer to use \TIKZ\ . + +\item +The order of the arguments of the macro \tkzcname{tkzDefPointOnCircle} has changed: now it is center, angle and point or radius. +I have added two options for working with radians which are \tkzname{through in rad} and \tkzname{R in rad}. + + +\item I added the option \tkzname{reverse} to the arcs paths. This allows to reverse the path and to reverse if necessary the arrows that would be present. + + +\item I have unified the styles for the labels. There is now only \tkzname{label style} left which is valid for points, segments, lines, circles and angles. I have deleted \tkzname{label seg style} \tkzname{label line style} and \tkzname{label angle style} + +\item I added the macro |tkzFillAngles| to use several angles. +\item Correction option \tkzname{return} witk \tkzcname{tkzProtractor} +As a reminder, the following changes have been made previously: + + \item |\tkzDrawMedian|, |\tkzDrawBisector|, |\tkzDrawAltitude|, |\tkzDrawMedians|, |\tkzDrawBisectors| et |\tkzDrawAltitudes| do not exist anymore. The creation and drawing separation is not respected so it is preferable to first create the coordinates of these points with |\tkzDefSpcTriangle[median]| and then to choose the ones you are going to draw with |\tkzDrawSegments| or |\tkzDrawLines|; + +\item |\tkzDrawTriangle| has been deleted. |\tkzDrawTriangle[equilateral]| was handy but it is better to get the third point with |\tkzDefTriangle[equilateral]| and then draw with |\tkzDrawPolygon|; idem for |\tkzDrawSquare| and |\tkzDrawGoldRectangle|; + + +\item The circle inversion was badly defined so I rewrote the macro. The input arguments are always the center and a point of the circle, the output arguments are the center of the image circle and a point of the image circle or two points of the image line if the antecedent circle passes through the pole of the inversion. If the circle passes the inversion center, the image is a straight line, the validity of the procedure depends on the choice of the point on the antecedent circle; + +\item Correct allocation for gold sublime and euclide triangles; + + +\item I added the option " next to" for the intersections LC and CC; + + +\item Correction option isoceles right; -Here are some of the changes. I'm sorry but the list of changes and novelties is made in the greatest disorder! + +\item |\tkzDefMidArc(O,A,B)| gives the middle of the arc center $O$ from $A$ to $B$; + +\item Good news : Some useful tools have been added. They are present on an experimental basis and will undoubtedly need to be improved; + + +\item The options "orthogonal from and through" depend now of \tkzcname{tkzDefCircleBy} + +\begin{enumerate} + + \item |\tkzDotProduct(A,B,C)| computes the scalar product in an orthogonal reference system of the vectors $\overrightarrow{A,B}$ and $\overrightarrow{A,C}$. + + |\tkzDotProduct(A,B,C)=aa'+bb' if vec{AB} =(a,b) and vec{AC} =(a',b')| + + + \item |\tkzPowerCircle(A)(B,C)| power of point $A$ with respect to the circle of center $B$ passing through $C$; + + + \item |\tkzDefRadicalAxis(A,B)(C,D)| Radical axis of two circles of center $A$ and $C$; + + + \item Some tests : |\tkzIsOrtho(A,B,C)| and |\tkzIsLinear(A,B,C)| The first indicates whether the lines $(A,B)$ and $(A,C)$ are orthogonal. The second indicates whether the points $A$, $B$ and $C$ are aligned; + + |\tkzIsLinear(A,B,C)| if $A$,$B$,$C$ are aligned then |\tkzLineartrue| + you can use |\iftkzLinear| (idem for |\tkzIsOrtho|); + +\item A style for vectors has been added that you can of course modify +|tikzset{vector style/.style={>=Latex,->}}|; + + +\item Now it's possible to add an arrow on a line or a circle with the option |tkz arrow|. +\end{enumerate} +\end{itemize} + +% subsection with_4_2_version (end) +\subsection{Changes with previous versions} % (fold) +\label{sub:changes_with_previous_versions} \vspace{1cm} \begin{itemize}\setlength{\itemsep}{10pt} - -\item An important novelty is the recent replacement of the \tkzNamePack{fp} package by \tkzNamePack{xfp}. This is to improve the calculations a little bit more and to make it easier to use; -\item Improved code and bug fixes; +\item I remind you that an important novelty is the recent replacement of the \tkzNamePack{fp} package by \tkzNamePack{xfp}. This is to improve the calculations a little bit more and to make it easier to use; + -\item First of all, you don’t have to deal with Tik Z the size of the bounding box. Early versions of \tkzname{\tkznameofpack} did not control the size of the bounding box, The bounding box is now controlled in each macro (hopefully) to avoid the use of \tkzcname{tkzInit} followed by \tkzcname{tkzClip}; +\item First of all, you don’t have to deal with \TIKZ\ the size of the bounding box. Early versions of \tkzname{\tkznameofpack} did not control the size of the bounding box, The bounding box is now controlled in each macro (hopefully) to avoid the use of \tkzcname{tkzInit} followed by \tkzcname{tkzClip}; \item With \tkzimp{tkz-euclide} loads all objects, so there's no need to place \tkzcname{usetkzobj\{all\}}; @@ -37,15 +146,11 @@ Here are some of the changes. I'm sorry but the list of changes and novelties is \item The notion of vector disappears, to draw a vector just pass "->" as an option to \tkzcname{tkzDrawSegment}; -\item |\tkzDrawMedian|, |\tkzDrawBisector|, |\tkzDrawAltitude|, |\tkzDrawMedians|, |\tkzDrawBisectors| et |\tkzDrawAltitudes| do not exist anymore. The creation and drawing separation is not respected so it is preferable to first create the coordinates of these points with |\tkzDefSpcTriangle[median]| and then to choose the ones you are going to draw with |\tkzDrawSegments| or |\tkzDrawLines|; -\item |\tkzDefIntSimilitudeCenter| and |\tkzDefExtSimilitudeCenter| do not exist anymore; - -\item |\tkzDrawTriangle| has been deleted. |\tkzDrawTriangle[equilateral]| was handy but it is better to get the third point with |\tkzDefTriangle[equilateral]| and then draw with |\tkzDrawPolygon|; idem for |\tkzDrawSquare| and |\tkzDrawGoldRectangle|; +\item |\tkzDefIntSimilitudeCenter| and |\tkzDefExtSimilitudeCenter| do not exist anymore, now you need to use |\tkzDefSimilitudeCenter[int]| or |\tkzDefSimilitudeCenter[ext]|; \item |\tkzDefRandPointOn| is replaced by |\tkzGetRandPointOn|; -\item now |\tkzTangent| is replaced by |\tkzDefTangent|; \item An option of the macro \tkzcname{tkzDefTriangle} has changed, in the previous version the option was "euclide" with an "e". Now it's "euclid"; @@ -62,5 +167,6 @@ Here are some of the changes. I'm sorry but the list of changes and novelties is \item The styles can be modified with the help of the following macros : \tkzcname{tkzSetUpPoint}, \tkzcname{tkzSetUpLine}, \tkzcname{tkzSetUpArc}, \tkzcname{tkzSetUpCompass}, \tkzcname{tkzSetUpLabel} and \tkzcname{tkzSetUpStyle}. The last one allows you to create a new style. \end{itemize} +% subsection changes_with_previous_versions (end) \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-others.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-others.tex index a47fc85075..0548bbaf6a 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-others.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-others.tex @@ -61,11 +61,11 @@ Another possiblity is to use \tkzcname{tkzFillAngle}. \tkzGetPoint{B} \tkzDefPointBy[rotation=center O angle -50](N) \tkzGetPoint{A} - \tkzInterLC(M,B)(O,N) \tkzGetFirstPoint{C} - \tkzInterLC(M,A)(O,N) \tkzGetSecondPoint{A'} + \tkzInterLC[common=B](M,B)(O,B) \tkzGetFirstPoint{C} + \tkzInterLC[common=A](M,A)(O,A) \tkzGetFirstPoint{A'} \tkzMarkAngle[mkpos=.2, size=0.5](A,C,B) \tkzMarkAngle[mkpos=.2, size=0.5](A,M,C) - \tkzDrawSegments(A,C M,A M,B) + \tkzDrawSegments(A,C M,A M,B A,B) \tkzDrawCircle(O,N) \tkzLabelCircle[above left](O,N)(120){% $\mathcal{C}$} @@ -131,10 +131,10 @@ Another interesting example from John, you can see how to use some extra options \end{tkzexample} \subsection{Example 2: from Indonesia} -\begin{tkzexample}[vbox,small] - \begin{tikzpicture}[pol/.style={fill=brown!40,opacity=.5}, +\begin{tkzexample}[vbox,overhang,small] + \begin{tikzpicture}[pol/.style={fill=brown!40,opacity=.2}, seg/.style={tkzdotted,color=gray}, hidden pt/.style={fill=gray!40}, - mra/.style={color=gray!70,tkzdotted,/tkzrightangle/size=.2},scale=1.5] + mra/.style={color=gray!70,tkzdotted,/tkzrightangle/size=.2},scale=2] \tkzDefPoints{0/0/A,2.5/0/B,1.33/0.75/D,0/2.5/E,2.5/2.5/F} \tkzDefLine[parallel=through D](A,B) \tkzGetPoint{I1} \tkzDefLine[parallel=through B](A,D) \tkzGetPoint{I2} @@ -277,44 +277,7 @@ Advanced Mathematics, Drawing geometry pictures. }; \end{tikzpicture} -\begin{tikzpicture} - \tkzDefPoint(0,0){A} \tkzDefPoint(4,1){B} - \tkzInterCC(A,B)(B,A) \tkzGetPoints{C}{D} - \tkzInterLC(A,B)(B,A) \tkzGetPoints{F}{E} - \tkzDrawCircles[dashed](A,B B,A) - \tkzDrawPolygons(A,B,C A,E,D) - - \tkzCompasss[color=red, very thick](A,C B,C A,D B,D) - \begin{scope} - \tkzSetUpArc[thick,delta=0] - \tkzDrawArc[fill=blue!10](A,B)(C) - \tkzDrawArc[fill=blue!10](B,C)(A) - \tkzDrawArc[fill=blue!10](C,A)(B) - \end{scope} - \tkzMarkAngles(D,A,E A,E,D) - \tkzFillAngles[fill=yellow,opacity=0.5](D,A,E A,E,D) - \tkzMarkRightAngle[size=0.65,fill=red!20,opacity=0.2](A,D,E) - - \tkzLabelAngle[pos=0.7](D,A,E){$\alpha$} - \tkzLabelAngle[pos=0.8](A,E,D){$\beta$} - \tkzLabelAngle[pos=0.5,xshift=-1.4mm](A,D,D){$90^\circ$} - \begin{scope}[font=\small] - \tkzLabelSegment[below=0.6cm,align=center](A,B){Reuleaux\\triangle} - \tkzLabelSegment[above right,sloped](A,E){hypotenuse} - \tkzLabelSegment[below,sloped](D,E){opposite} - \tkzLabelSegment[below,sloped](A,D){adjacent} - \tkzLabelSegment[below right=4cm](A,E){Thales circle} - \end{scope} - - \tkzLabelPoints[below left](A) - \tkzLabelPoints(B,D) - \tkzLabelPoint[above](C){$C$} - \tkzLabelPoints(E) - \tkzDrawPoints(A,...,E) - -\end{tikzpicture} - -\begin{tkzexample}[code only,small] +\begin{tkzexample}[vbox,small] \begin{tikzpicture} \tkzDefPoint(0,0){A} \tkzDefPoint(4,1){B} \tkzInterCC(A,B)(B,A) \tkzGetPoints{C}{D} diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-pointby.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-pointby.tex index a2f5584670..67e357c625 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-pointby.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-pointby.tex @@ -1,4 +1,4 @@ -\section{Definition of points by transformation : \tkzcname{tkzDefPointBy} } +\section{Definition of points by transformation} These transformations are: \begin{itemize} @@ -11,11 +11,13 @@ These transformations are: \item inversion with respect to a circle. \end{itemize} +\subsection{\tkzcname{tkzDefPointBy}} The choice of transformations is made through the options. There are two macros, one for the transformation of a single point \tkzcname{tkzDefPointBy} and the other for the transformation of a list of points \tkzcname{tkzDefPointsBy}. By default the image of $A$ is $A'$. For example, we'll write: \begin{tkzltxexample}[] \tkzDefPointBy[translation= from A to A'](B) \end{tkzltxexample} The result is in \tkzname{tkzPointResult} + \medskip \begin{NewMacroBox}{tkzDefPointBy}{\oarg{local options}\parg{pt}}% The argument is a simple existing point and its image is stored in \tkzname{tkzPointResult}. If you want to keep this point then the macro \tkzcname{tkzGetPoint\{M\}} allows you to assign the name \tkzname{M} to the point. @@ -44,11 +46,11 @@ options & & examples \\ \bottomrule \end{tabular} -The image is only defined and not drawn. +\medskip +\emph{The image is only defined and not drawn.} \end{NewMacroBox} -\subsection{Examples of transformations} -\subsubsection{translation} +\subsubsection{\tkzname{translation}} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[>=latex] @@ -61,7 +63,7 @@ The image is only defined and not drawn. \end{tikzpicture} \end{tkzexample} -\subsubsection{reflection (orthogonal symmetry)} +\subsubsection{\tkzname{reflection} (orthogonal symmetry)} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.75] @@ -217,7 +219,6 @@ Directly \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.5] \tkzDefPoints{4/0/A,6/0/P,0/0/O} - \tkzDefCircle(O,A) \tkzDefPointBy[inversion = center O through A](P) \tkzGetPoint{P'} \tkzDrawSegments(O,P) @@ -230,10 +231,9 @@ Directly \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.5] \tkzDefPoints{4/0/A,6/0/P,0/0/O} - \tkzDefCircle(O,A) \tkzDefLine[orthogonal=through P](O,P) \tkzGetPoint{L} - \tkzDefTangent[from = P](O,A) \tkzGetPoints{R}{Q} + \tkzDefLine[tangent from = P](O,A) \tkzGetPoints{R}{Q} \tkzDefPointBy[projection=onto O--A](Q) \tkzGetPoint{P'} \tkzDrawSegments(O,P O,A) \tkzDrawSegments[new](O,P O,Q P,Q Q,P') @@ -252,7 +252,7 @@ Directly \end{tkzexample} -\subsubsection{Inversion of lines} +\subsubsection{\tkzname{Inversion of lines} ex 1} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.5] \tkzDefPoints{0/0/O,3/0/I,4/3/P,6/-3/Q} @@ -262,7 +262,8 @@ Directly \tkzGetPoint{A'} \tkzDefPointBy[inversion = center O through I](P) \tkzGetPoint{P'} -\tkzDrawCircle[new,diameter](O,A') +\tkzDefCircle[diameter](O,A')\tkzGetPoint{o} +\tkzDrawCircle[new](o,A') \tkzDrawLines[add=.25 and .25,red](P,Q) \tkzDrawLines[add=.25 and .25](O,A) \tkzDrawSegments(O,P) @@ -270,6 +271,7 @@ Directly \end{tikzpicture} \end{tkzexample} +\subsubsection{\tkzname{inversion of lines} ex 2} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.5] \tkzDefPoints{0/0/O,3/0/I,3/2/P,3/-2/Q} @@ -279,7 +281,8 @@ Directly \tkzGetPoint{A'} \tkzDefPointBy[inversion = center O through I](P) \tkzGetPoint{P'} -\tkzDrawCircle[new,diameter](O,A') +\tkzDefCircle[diameter](O,A')\tkzGetPoint{o} +\tkzDrawCircle[new](o,A') \tkzDrawLines[add=.25 and .25,red](P,Q) \tkzDrawLines[add=.25 and .25](O,A) \tkzDrawSegments(O,P) @@ -287,6 +290,7 @@ Directly \end{tikzpicture} \end{tkzexample} +\subsubsection{\tkzname{inversion of lines} ex 3} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.5] \tkzDefPoints{0/0/O,3/0/I,2/1/P,2/-2/Q} @@ -296,7 +300,8 @@ Directly \tkzGetPoint{A'} \tkzDefPointBy[inversion = center O through I](P) \tkzGetPoint{P'} -\tkzDrawCircle[new,diameter](O,A') +\tkzDefCircle[diameter](O,A') +\tkzDrawCircle[new](I,A') \tkzDrawLines[add=.25 and .75,red](P,Q) \tkzDrawLines[add=.25 and .25](O,A') \tkzDrawSegments(O,P') @@ -304,31 +309,31 @@ Directly \end{tikzpicture} \end{tkzexample} - -\subsubsection{Inversion of circle} -\begin{tkzexample}[latex=6cm,small] -\begin{tikzpicture}[scale=.5] +\subsubsection{\tkzname{inversion} of circle and \tkzname{homothety} } +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[scale=.75] \tkzDefPoints{0/0/O,3/2/A,2/1/P} -\tkzDefTangent[from = O](A,P) \tkzGetPoints{T}{X} -\tkzDefPointsBy[homothety=center O ratio 1.25](A,P,T){} -\tkzInterCC(A,P)(A',P') \tkzGetPoints{C}{D} +\tkzDefLine[tangent from = O](A,P) \tkzGetPoints{T}{X} +\tkzDefPointsBy[homothety = center O% + ratio 1.25](A,P,T){} +\tkzInterCC(A,P)(A',P') \tkzGetPoints{C}{D} \tkzCalcLength(A,P) \tkzGetLength{rAP} -\tkzDefPointOnCircle[R= angle 190 center A radius \rAP] +\tkzDefPointOnCircle[R= center A angle 190 radius \rAP] \tkzGetPoint{M} \tkzDefPointBy[inversion = center O through C](M) \tkzGetPoint{M'} -\tkzDrawCircles(A,P A',P') +\tkzDrawCircles[new](A,P A',P') \tkzDrawCircle(O,C) \tkzDrawLines[add=0 and .5](O,T' O,A' O,M' O,P') \tkzDrawPoints(A,A',P,P',O,T,T',M,M') -\tkzLabelPoints(O,T,T') -\tkzLabelPoints[above left](M,M') +\tkzLabelPoints(O,T,T',M,M') \tkzLabelPoints[below](P,P') \end{tikzpicture} \end{tkzexample} -\subsubsection{Inversion of Triangle with respect to the Incircle} + +\subsubsection{\tkzname{inversion} of Triangle with respect to the Incircle} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=1] \tkzDefPoints{0/0/A,5/1/B,3/6/C} @@ -348,15 +353,15 @@ Directly \tkzDrawPolygon(A,B,C) \tkzDrawCircle(O,b)\tkzDrawPoints(A,B,C,O) \tkzDrawCircles[dashed,gray](Ja,y Jb,x Jc,z) -\tkzDrawArc[line width=1pt,orange](Jb,x)(z) -\tkzDrawArc[line width=1pt,orange](Jc,z)(y) -\tkzDrawArc[line width=1pt,orange](Ja,y)(x) +\tkzDrawArc[line width=1pt,orange,delta=0](Jb,x)(z) +\tkzDrawArc[line width=1pt,orange,delta=0](Jc,z)(y) +\tkzDrawArc[line width=1pt,orange,delta=0](Ja,y)(x) \tkzLabelPoint[below](A){$A$}\tkzLabelPoint[above](C){$C$} \tkzLabelPoint[right](B){$B$}\tkzLabelPoint[below](O){$O$} \end{tikzpicture} \end{tkzexample} -\subsubsection{Inversion: orthogonal circle with inversion circle} +\subsubsection{\tkzname{inversion}: orthogonal circle with inversion circle} The inversion circle itself, circles orthogonal to it, and lines through the inversion center are invariant under inversion. If the circle meets the reference circle, these invariant points of intersection are also on the inverse circle. See I and J in the next figure. \begin{tkzexample}[latex=5cm,small] @@ -364,7 +369,7 @@ The inversion circle itself, circles orthogonal to it, and lines through the inv \tkzDefPoint(0,0){O}\tkzDefPoint(1,0){A} \tkzDefPoint(-1.5,-1.5){z1} \tkzDefPoint(1.5,-1.25){z2} -\tkzDefCircleBy[orthogonal through=z1 and z2](O,A) +\tkzDefCircle[orthogonal through=z1 and z2](O,A) \tkzGetPoint{c} \tkzDrawCircle[new](c,z1) \tkzDefPointBy[inversion = center O through A](z1) @@ -379,28 +384,6 @@ The inversion circle itself, circles orthogonal to it, and lines through the inv \end{tikzpicture} \end{tkzexample} -\subsubsection{\tkzname{Inversion} and \tkzname{homothety} } -\begin{tkzexample}[latex=7cm,small] -\begin{tikzpicture}[scale=.75] -\tkzDefPoints{0/0/O,3/2/A,2/1/P} -\tkzDefTangent[from = O](A,P) \tkzGetPoints{T}{X} -\tkzDefPointsBy[homothety = center O% - ratio 1.25](A,P,T){} -\tkzInterCC(A,P)(A',P') \tkzGetPoints{C}{D} -\tkzCalcLength(A,P) -\tkzGetLength{rAP} -\tkzDefPointOnCircle[R= angle 190 center A radius \rAP] -\tkzGetPoint{M} -\tkzDefPointBy[inversion = center O through C](M) -\tkzGetPoint{M'} -\tkzDrawCircles[new](A,P A',P') -\tkzDrawCircle(O,C) -\tkzDrawLines[add=0 and .5](O,T' O,A' O,M' O,P') -\tkzDrawPoints(A,A',P,P',O,T,T',M,M') -\tkzLabelPoints(O,T,T',M,M') -\tkzLabelPoints[below](P,P') -\end{tikzpicture} -\end{tkzexample} For a more complex example see \tkzname{Pappus} \ref{pappus} @@ -477,7 +460,7 @@ options & & examples \\ The points are only defined and not drawn. \end{NewMacroBox} -\subsubsection{Example of translation} +\subsubsection{\tkzname{translation} of multiple points} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[>=latex] \tkzDefPoints{0/0/A,3/0/B,3/1/A',1/2/C} @@ -493,7 +476,7 @@ The points are only defined and not drawn. \end{tikzpicture} \end{tkzexample} -\subsubsection{Example of symmetry: an oval} +\subsubsection{\tkzname{symmetry} of multiple points: an oval} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=0.4] diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-points.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-points.tex index 51c4415438..2741872f8c 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-points.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-points.tex @@ -48,7 +48,7 @@ A point is defined if it has a name linked to a unique pair of decimal numbers. \tkzDefPoints{0/0/O,1/0/I,0/1/J} \tkzDefPoint(3,4){A} \tkzDrawPoints(O,A) - \tkzLabelPoint(A){$A_1 (x_1,y_1)$} + \tkzLabelPoint[above](A){$A_1 (x_1,y_1)$} \tkzShowPointCoord[xlabel=$x_1$, ylabel=$y_1$](A) \tkzLabelPoints(O,I) @@ -73,7 +73,7 @@ A point is defined if it has a name linked to a unique pair of decimal numbers. \tkzFillAngle[opacity=.5](I,O,P) \tkzLabelAngle[pos=1.25](I,O,P){% $\alpha$} - \tkzLabelPoint(P){$P (\alpha : d )$} + \tkzLabelPoint[right](P){$P (\alpha : d )$} \tkzDrawPoints[shape=cross](I,J) \tkzLabelPoints(O,I) \tkzLabelPoints[left](J) @@ -89,7 +89,7 @@ A point is defined if it has a name linked to a unique pair of decimal numbers. \tkzDefPoints{0/0/O,1/0/I,0/1/J} \tkzDefPoint(3,4){A} \tkzDrawPoints(O,A) - \tkzLabelPoint(A){$A_1 (x_1,y_1)$} + \tkzLabelPoint[above](A){$A_1 (x_1,y_1)$} \tkzShowPointCoord[xlabel=$x_1$,ylabel=$y_1$](A) \tkzLabelPoints(O,I) \tkzLabelPoints[left](J) @@ -109,7 +109,7 @@ A point is defined if it has a name linked to a unique pair of decimal numbers. \tkzMarkAngle[mark=none,->](I,O,P) \tkzFillAngle[opacity=.5](I,O,P) \tkzLabelAngle[pos=1.25](I,O,P){$\alpha$} - \tkzLabelPoint(P){$P (\alpha : d )$} + \tkzLabelPoint[right](P){$P (\alpha : d )$} \tkzDrawPoints[shape=cross](I,J) \tkzLabelPoints(O,I) \tkzLabelPoints[left](J) @@ -129,7 +129,7 @@ arguments & default & definition \\ \end{tabular} \medskip -The obligatory arguments of this macro are two dimensions expressed with decimals, in the first case they are two measures of length, in the second case they are a measure of length and the measure of an angle in degrees. Do not confuse the reference with the name of a point. The reference is used by calculations, but frequently, the name is identical to the reference. +\emph{The obligatory arguments of this macro are two dimensions expressed with decimals, in the first case they are two measures of length, in the second case they are a measure of length and the measure of an angle in degrees. Do not confuse the reference with the name of a point. The reference is used by calculations, but frequently, the name is identical to the reference.} \medskip \begin{tabular}{lll}% @@ -228,7 +228,7 @@ This macro allows you to place one point relative to another. This is equivalent \tkzDrawSegments(A,B B,C C,A) \tkzMarkSegments[mark=|](A,B A,C) \tkzDrawPoints(A,B,C) - \tkzLabelPoints(B,C) + \tkzLabelPoints[right](B,C) \tkzLabelPoints[above left](A) \end{tikzpicture} \end{tkzexample} @@ -243,7 +243,7 @@ Let's see how to get an equilateral triangle (there is much simpler) \tkzDefShiftPoint[A](-30:3){C} \tkzDrawPolygon(A,B,C) \tkzDrawPoints(A,B,C) - \tkzLabelPoints(B,C) + \tkzLabelPoints[right](B,C) \tkzLabelPoints[above left](A) \tkzMarkSegments[mark=|](A,B A,C B,C) \end{tikzpicture} diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-pointsSpc.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-pointsSpc.tex index bb2d2d9215..0aac3cc499 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-pointsSpc.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-pointsSpc.tex @@ -120,7 +120,7 @@ Review the use of \tkzcname{tkzDefPoint}. \end{tikzpicture} \end{tkzexample} -\subsection{Golden ratio} +\subsection{\tkzname{Golden ratio} \tkzcname{tkzDefGoldenRatio}} From Wikipedia : In mathematics, two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Expressed algebraically, for quantities $a$, $b$ such as $a > b > 0$; $a+b$ is to $a$ as $a$ is to $b$. $ \frac{a+b}{a} = \frac{a}{b} = \phi = \frac{1 + \sqrt{5}}{2}$ @@ -154,8 +154,21 @@ $AB=a$, $BC=b$ and $\frac{AC}{AB} = \frac{AB}{BC} =\phi$ \end{tikzpicture} \end{tkzexample} +\subsubsection{Golden arbelos} +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture}[scale=.6] +\tkzDefPoints{0/0/A,10/0/B} +\tkzDefGoldenRatio(A,B) \tkzGetPoint{C} +\tkzDefMidPoint(A,B) \tkzGetPoint{O_1} +\tkzDefMidPoint(A,C) \tkzGetPoint{O_2} +\tkzDefMidPoint(C,B) \tkzGetPoint{O_3} +\tkzDrawSemiCircles[fill=purple!15](O_1,B) +\tkzDrawSemiCircles[fill=teal!15](O_2,C O_3,B) +\end{tikzpicture} +\end{tkzexample} + It is also possible to use the following macro. -\subsection{Barycentric coordinates } +\subsection{\tkzname{Barycentric coordinates} with \tkzcname{tkzDefBarycentricPoint}} $pt_1$, $pt_2$, \dots, $pt_n$ being $n$ points, they define $n$ vectors $\overrightarrow{v_1}$, $\overrightarrow{v_2}$, \dots, $\overrightarrow{v_n}$ with the origin of the referential as the common endpoint. $\alpha_1$, $\alpha_2$, \dots $\alpha_n$ are $n$ numbers, the vector obtained by: @@ -174,11 +187,11 @@ arguments & default & definition \\ \end{tabular} \medskip -You need at least two points. Result in \tkzname{tkzPointResult}. +\emph{You need at least two points. Result in \tkzname{tkzPointResult}.} \end{NewMacroBox} -\subsubsection{Using \tkzcname{tkzDefBarycentricPoint} with two points} +\subsubsection{with two points} In the following example, we obtain the barycenter of points $A$ and $B$ with coefficients $1$ and $2$, in other words: \[ \overrightarrow{AI}= \frac{2}{3}\overrightarrow{AB} @@ -196,7 +209,7 @@ In the following example, we obtain the barycenter of points $A$ and $B$ with co \end{tikzpicture} \end{tkzexample} -\subsubsection{Using \tkzcname{tkzDefBarycentricPoint} with three points} +\subsubsection{with three points} This time $M$ is simply the center of gravity of the triangle. For reasons of simplification and homogeneity, there is also \tkzcname{tkzCentroid}. @@ -210,16 +223,17 @@ This time $M$ is simply the center of gravity of the triangle. \tkzDefMidPoint(C,B) \tkzGetPoint{A'} \tkzDrawPolygon(A,B,C) \tkzDrawLines[add=0 and 1,new](A,G B,G C,G) - \tkzLabelPoint(G){$G$} \tkzDrawPoints[new](A',B',C',G) \tkzDrawPoints(A,B,C) + \tkzLabelPoint[above right](G){$G$} \tkzAutoLabelPoints[center=G](A,B,C) - \tkzAutoLabelPoints[center=G,above right](A',B',C') + \tkzLabelPoints[above right](A') + \tkzLabelPoints[below](B',C') \end{tikzpicture} \end{tkzexample} -\subsection{Internal and external Similitude Center} +\subsection{\tkzname{Internal and external Similitude Center}} The centers of the two homotheties in which two circles correspond are called external and internal centers of similitude. You can use \tkzcname{tkzDefIntSimilitudeCenter} and \tkzcname{tkzDefExtSimilitudeCenter} but the next macro is better. \begin{NewMacroBox}{tkzDefSimilitudeCenter}{\oarg{options}\parg{O,A}\parg{O',B} or \parg{O,r}\parg{O',r'}}% @@ -249,21 +263,42 @@ options & default & definition \\ \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.75] \tkzDefPoints{0/0/O,4/-5/A,3/0/B,5/-5/C} -\tkzDefSimilitudeCenter[int](O,B)(A,C) \tkzGetPoint{I} - \tkzDefSimilitudeCenter[ext](O,B)(A,C) \tkzGetPoint{J} - \tkzDefTangent[from = I](O,B) \tkzGetPoints{D}{E} - \tkzDefTangent[from = I](A,C) \tkzGetPoints{D'}{E'} - \tkzDefTangent[from = J](O,B) \tkzGetPoints{F}{G} - \tkzDefTangent[from = J](A,C) +\tkzDefSimilitudeCenter[int](O,B)(A,C) \tkzGetPoint{I} + \tkzDefSimilitudeCenter[ext](O,B)(A,C) \tkzGetPoint{J} + \tkzDefLine[tangent from = I](O,B) \tkzGetPoints{D}{E} + \tkzDefLine[tangent from = I](A,C) \tkzGetPoints{D'}{E'} + \tkzDefLine[tangent from = J](O,B) \tkzGetPoints{F}{G} + \tkzDefLine[tangent from = J](A,C) \tkzGetPoints{F'}{G'} \tkzDrawCircles(O,B A,C) \tkzDrawSegments[add = .5 and .5,new](D,D' E,E') \tkzDrawSegments[add= 0 and 0.25,new](J,F J,G) \tkzDrawPoints(O,A,I,J,D,E,F,G,D',E',F',G') - \tkzLabelPoints[font=\scriptsize](O,A,I,J,D,E,F,G,D',E',F',G') \end{tikzpicture} \end{tkzexample} +\subsubsection{D'Alembert Theorem} % (fold) +\label{ssub:d_alembert_theorem} + +\begin{tkzexample}[latex=7cm,small] + \begin{tikzpicture}[scale=.6,rotate=90] + \tkzDefPoints{0/0/A,3/0/a,7/-1/B,5.5/-1/b} + \tkzDefPoints{5/-4/C,4.25/-4/c} + \tkzDrawCircles(A,a B,b C,c) + \tkzDefExtSimilitudeCenter(A,a)(B,b) \tkzGetPoint{I} + \tkzDefExtSimilitudeCenter(A,a)(C,c) \tkzGetPoint{J} + \tkzDefExtSimilitudeCenter(C,c)(B,b) \tkzGetPoint{K} + \tkzDefIntSimilitudeCenter(A,a)(B,b) \tkzGetPoint{I'} + \tkzDefIntSimilitudeCenter(A,a)(C,c) \tkzGetPoint{J'} + \tkzDefIntSimilitudeCenter(C,c)(B,b) \tkzGetPoint{K'} + \tkzDrawPoints(A,B,C,I,J,K,I',J',K') + \tkzDrawSegments[new](I,K A,I A,J B,I B,K C,J C,K) + \tkzDrawSegments[new](I,J' I',J I',K) + \end{tikzpicture} +\end{tkzexample} + +% subsubsection d_alembert_theorem (end) + You can use \tkzcname{tkzDefBarycentricPoint} to find a homothetic center |\tkzDefBarycentricPoint(O=\r,A=\R) \tkzGetPoint{I}| \\ @@ -280,12 +315,11 @@ You can use \tkzcname{tkzDefBarycentricPoint} to find a homothetic center \tkzDrawCircles(A,B C,B) \tkzDrawSegments[add= 0 and 0.25,cyan](J,F J,G) \tkzDrawPoints(A,J,F,G,F',G') - \tkzLabelPoints[font=\scriptsize](A,J,F,G,F',G') \end{tikzpicture} \end{tkzexample} \newpage %<----------------------------------------------------------------------> -\subsection{ Harmonic division} +\subsection{ \tkzname{Harmonic division} with \tkzcname{tkzDefHarmonic}} %<----------------------------------------------------------------------> \begin{NewMacroBox}{tkzDefHarmonic}{\oarg{options}\parg{pt1,pt2,pt3} or \parg{pt1,pt2}}% @@ -311,6 +345,29 @@ options & default & definition \\ \end{tikzpicture} \end{tkzexample} +\subsubsection{Bisector and harmonic division} % (fold) +\label{ssub:bisector_and_harmonic_division} + +\begin{tkzexample}[vbox,small] + \begin{tikzpicture}[scale=1.25] + \tkzDefPoints{0/0/A,4/0/C,5/3/X} + \tkzDefLine[bisector](A,X,C) \tkzGetPoint{x} + \tkzInterLL(X,x)(A,C) \tkzGetPoint{B} + \tkzDefHarmonic[ext](A,C,B) \tkzGetPoint{D} + \tkzDrawPolygon(A,X,C) + \tkzDrawSegments(X,B C,D D,X) + \tkzDrawPoints(A,B,C,D,X) + \tkzMarkAngles[mark=s|](A,X,B B,X,C) + \tkzMarkRightAngle[size=.4, + fill=gray!20, + opacity=.3](B,X,D) + \tkzLabelPoints(A,B,C,D) + \tkzLabelPoints[above right](X) + \end{tikzpicture} +\end{tkzexample} + + +% subsubsection bisector_and_harmonic_division (end) \subsubsection{option \tkzname{both} } \tkzname{both} is the default option \begin{tkzexample}[vbox,small] @@ -324,9 +381,9 @@ options & default & definition \\ \end{tkzexample} %<----------------------------------------------------------------------> -\subsection{ Equidistant points} +\subsection{\tkzname{Equidistant points} with \tkzcname{tkzDefEquiPoints} } %<----------------------------------------------------------------------> -\subsubsection{\tkzcname{tkzDefEquiPoints}} + \begin{NewMacroBox}{tkzDefEquiPoints}{\oarg{local options}\parg{pt1,pt2}}% \begin{tabular}{lll}% arguments & default & definition \\ @@ -342,9 +399,14 @@ options & default & definition \\ \TOline{show} {false} {if true displays compass traces} \TOline{/compass/delta} {0} {compass trace size } \end{tabular} + +\medskip +\emph{This macro makes it possible to obtain two points on a straight line equidistant from a given point.} \end{NewMacroBox} -This macro makes it possible to obtain two points on a straight line equidistant from a given point. + + + \subsubsection{Using \tkzcname{tkzDefEquiPoints} with options} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture} @@ -360,10 +422,63 @@ This macro makes it possible to obtain two points on a straight line equidistant \tkzLabelPoints[color=blue](A,B,C) \end{tikzpicture} \end{tkzexample} +%<----------------------------------------------------------------------> +% Middle of an arc > +%<----------------------------------------------------------------------> +\subsection{Middle of an arc} +\begin{NewMacroBox}{tkzDefMidArc}{\parg{pt1,pt2,pt3}}% +\begin{tabular}{lll}% +arguments & default & definition \\ +\midrule +\TAline{$pt1,pt2,pt3$}{no default}{$pt1$ is the center, $\widearc{pt2pt3}$ the arc} +\end{tabular} +\end{NewMacroBox} +\begin{tkzexample}[vbox,small] + \begin{tikzpicture}[scale=1] + \tkzDefPoints{0/0/A,10/0/B} + \tkzDefGoldenRatio(A,B) \tkzGetPoint{C} + \tkzDefMidPoint(A,B) \tkzGetPoint{O_1} + \tkzDefMidPoint(A,C) \tkzGetPoint{O_2} + \tkzDefMidPoint(C,B) \tkzGetPoint{O_3} + \tkzDefMidArc(O_3,B,C) \tkzGetPoint{P} + \tkzDefMidArc(O_2,C,A) \tkzGetPoint{Q} + \tkzDefMidArc(O_1,B,A) \tkzGetPoint{L} + \tkzDefPointBy[rotation=center C angle 90](B) \tkzGetPoint{c} + \tkzInterCC[common=B](P,B)(O_1,B) \tkzGetFirstPoint{P_1} + \tkzInterCC[common=C](P,C)(O_2,C) \tkzGetFirstPoint{P_2} + \tkzInterCC[common=C](Q,C)(O_3,C) \tkzGetFirstPoint{P_3} + \tkzInterLC[near](c,C)(O_1,A) \tkzGetFirstPoint{D} + \tkzInterLL(A,P_1)(C,D) \tkzGetPoint{P_1'} + \tkzDefPointBy[inversion = center A through D](P_2) \tkzGetPoint{P_2'} + \tkzDefCircle[circum](P_3,P_2,P_1) \tkzGetPoint{O_4} + \tkzInterLL(B,Q)(A,P) \tkzGetPoint{S} + \tkzDefMidPoint(P_2',P_1') \tkzGetPoint{o} + \tkzDefPointBy[inversion = center A through D](S) \tkzGetPoint{S'} + \tkzDrawArc[cyan,delta=0](Q,A)(P_1) + \tkzDrawArc[cyan,delta=0](P,P_1)(B) + \tkzDrawSemiCircles[teal](O_1,B O_2,C O_3,B) + \tkzDrawCircles[new](o,P O_4,P_1) + \tkzDrawSegments(A,B) + \tkzDrawSegments[cyan](A,P_1 A,S' A,P_2') + \tkzDrawSegments[purple](B,L C,P_2' B,Q B,L S',P_1') + \tkzDrawLines[add=0 and .8](B,P_2') + \tkzDrawLines[add=0 and .4](C,D) + \tkzDrawPoints(A,B,C,P,Q,P_3,P_2,P_1,P_1',D,P_2',L,S,S') + \tkzLabelPoints(A,B,C,P_3) + \tkzLabelPoints[above](P,Q,P_1) + \tkzLabelPoints[above right](P_2,P_2',D,S') + \tkzLabelPoints[above left](L,S) + \tkzLabelPoints[below left](P_1') + \end{tikzpicture} +\end{tkzexample} + +%<----------------------------------------------------------------------> +% Point on a line > +%<----------------------------------------------------------------------> \section{Point on line or circle} -\subsection{Point on a line} +\subsection{Point on a line with \tkzcname{tkzDefPointOnLine}} \begin{NewMacroBox}{tkzDefPointOnLine}{\oarg{local options}\parg{A,B}}% \begin{tabular}{lll}% @@ -399,15 +514,22 @@ options & default & definition \\ \end{tikzpicture} \end{tkzexample} -\subsection{Point on a circle} +\subsection{Point on a circle with \tkzcname{tkzDefPointOnCircle}} +The order of the arguments has changed: now it is center, angle and point or radius. +I have added two options for working with radians which are \tkzname{through in rad} and \tkzname{R in rad}. \begin{NewMacroBox}{tkzDefPointOnCircle}{\oarg{local options}}% \begin{tabular}{lll}% options & default & examples definition \\ \midrule -\TOline{through} {}{through = angle 30 center K1 point B]} -\TOline{R} {}{R = angle 30 center K1 radius \tkzcname{rAp}} +\TOline{through} {}{through = center K1 angle 30 point B]} +\TOline{R} {}{R = center K1 angle 30 radius \tkzcname{rAp}} +\TOline{through in rad} {}{through = center K1 angle pi/4 point B]} +\TOline{R} {}{R = center K1 angle pi/6 radius \tkzcname{rAp}} \end{tabular} + +\medskip +\emph{The new order for arguments are : center, angle and point or radius.} \end{NewMacroBox} \subsubsection{Altshiller's Theorem} @@ -416,11 +538,11 @@ options & default & examples definition \\ \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.4] \tkzDefPoints{0/0/P,5/0/Q,3/2/I} -\tkzDefCircleBy[orthogonal from=P](Q,I) +\tkzDefCircle[orthogonal from=P](Q,I) \tkzGetFirstPoint{E} \tkzDrawCircles(P,E Q,E) \tkzInterCC[common=E](P,E)(Q,E) \tkzGetFirstPoint{F} -\tkzDefPointOnCircle[through = angle 80 center P point E] +\tkzDefPointOnCircle[through = center P angle 80 point E] \tkzGetPoint{A} \tkzInterLC[common=E](A,E)(Q,E) \tkzGetFirstPoint{C} \tkzInterLL(A,F)(C,Q) \tkzGetPoint{D} @@ -434,16 +556,18 @@ options & default & examples definition \\ \end{tkzexample} \subsubsection{Use of \tkzcname{tkzDefPointOnCircle}} + \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture} \tkzDefPoints{0/0/A,4/0/B,0.8/3/C} -\tkzDefPointOnCircle[R = angle 90 center B radius 1] +\tkzDefPointOnCircle[R = center B angle 90 radius 1] \tkzGetPoint{I} \tkzDefCircle[circum](A,B,C) -\tkzGetPoint{G} \tkzGetLength{rG} -\tkzDefPointOnCircle[R = angle 30 center G radius \rG] +\tkzGetPoints{G}{g} +\tkzDefPointOnCircle[through = center G angle 30 point g] \tkzGetPoint{J} -\tkzDrawCircle[R,teal](B,1) +\tkzDefCircle[R](B,1) \tkzGetPoint{b} +\tkzDrawCircle[teal](B,b) \tkzDrawCircle(G,J) \tkzDrawPoints(A,B,C,G,I,J) \tkzAutoLabelPoints[center=G](A,B,C,J) @@ -506,7 +630,8 @@ options & default & definition \\ \tkzDrawSegments[new](A,Ha B,Hb C,Hc) \tkzDrawPoints(A,B,C,H) \tkzLabelPoint(H){$H$} - \tkzAutoLabelPoints[center=H](A,B,C) + \tkzLabelPoints[below](A,B) + \tkzLabelPoints[above](C) \tkzMarkRightAngles(A,Ha,B B,Hb,C C,Hc,A) \end{tikzpicture} \end{tkzexample} @@ -551,7 +676,8 @@ The center of the incircle, called the incenter, can be found as the intersectio \tkzDefTriangleCenter[in](A,B,C) \tkzGetPoint{I} \tkzDrawLines(A,B B,C C,A) -\tkzDrawCircle[in](A,B,C) +\tkzDefCircle[in](A,B,C) \tkzGetPoints{I}{i} +\tkzDrawCircle(I,i) \tkzDrawPoint[red](I) \tkzDrawPoints(A,B,C) \tkzLabelPoint(I){$I$} @@ -629,7 +755,6 @@ The point of concurrence $K$ of the symmedians, sometimes also called the Lemoin \tkzDrawLines[add = 0 and 2/3,new](A,K B,K C,K) \tkzDrawSegments[color=cyan](A,Ma B,Mb C,Mc) \tkzDrawSegments[color=green](A,Ia B,Ib C,Ic) - \tkzDrawLine[add=2 and 2](G,I) \tkzDrawPoints(A,B,C,K,G,I) \tkzLabelPoints[font=\scriptsize](A,B,K,G,I) \tkzLabelPoints[above,font=\scriptsize](C) @@ -650,11 +775,13 @@ The Spieker center is the center $Sp$ of the Spieker circle, i.e., the incenter \tkzGetPoint{Sp} \tkzDrawPolygon[](A,B,C) \tkzDrawPolygon[new](Ma,Mb,Mc) - \tkzDrawCircle[in](Ma,Mb,Mc) + \tkzDefCircle[in](Ma,Mb,Mc) \tkzGetPoints{I}{i} + \tkzDrawCircle(I,i) \tkzDrawPoints(B,C,A,Sp,Ma,Mb,Mc) - \tkzAutoLabelPoints[center=G,dist=.3](Ma,Mb,Mc) + \tkzAutoLabelPoints[center=G,dist=.3](Ma,Mb) \tkzLabelPoints[right](Sp) - \tkzAutoLabelPoints[center=G](A,B,C) + \tkzLabelPoints[below](A,B,Mc) + \tkzLabelPoints[above](C) \end{tikzpicture} \end{tkzexample} @@ -669,12 +796,13 @@ The Gergonne Point is the point of concurrency which results from connecting the \tkzDefTriangleCenter[gergonne](A,B,C) \tkzGetPoint{Ge} \tkzDefSpcTriangle[intouch](A,B,C){C_1,C_2,C_3} -\tkzDrawCircle[in](A,B,C) +\tkzDefCircle[in](A,B,C) \tkzGetPoints{I}{i} \tkzDrawLines[add=.25 and .25,teal](A,B A,C B,C) \tkzDrawSegments[new](A,C_1 B,C_2 C,C_3) \tkzDrawPoints(A,...,C,C_1,C_2,C_3) \tkzDrawPoints[red](Ge) -\tkzLabelPoints(A,...,C,C_1,C_2,C_3,Ge) +\tkzLabelPoints(B,C,C_1,Ge) +\tkzLabelPoints[above](A,C_2,C_3) \end{tikzpicture} \end{tkzexample} @@ -695,7 +823,7 @@ Let $Ta$ be the point at which the excircle with center $Ja$ meets the side $BC$ \tkzDrawPoints[new](Ja,Jb,Jc,Ta,Tb,Tc) \tkzClipBB \tkzDrawLines[add=1 and 1,dashed](A,B B,C C,A) - \tkzDrawCircles[ex,new](A,B,C C,A,B B,C,A) + \tkzDrawCircles[new](Ja,Ta Jb,Tb Jc,Tc) \tkzDrawSegments[new,dashed](Ja,Ta Jb,Tb Jc,Tc) \tkzDrawPoints(B,C,A) \tkzDrawPoints[new](Na) @@ -760,5 +888,4 @@ The Gergonne point $Ge$, triangle centroid $G$, and mittenpunkt $M$ are collinea \end{tikzpicture} \end{tkzexample} - \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-pointwith.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-pointwith.tex index 51abb0b7e1..200087f59e 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-pointwith.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-pointwith.tex @@ -210,7 +210,8 @@ $K=2$ therefore $AC=2$. \tkzDefPointWith[orthogonal normed,K=2](A,B) \tkzGetPoint{C} \tkzDrawPoints[color=red](A,B,C) - \tkzDrawCircle[R](A,2) + \tkzDefCircle[R](A,2) \tkzGetPoint{a} + \tkzDrawCircle(A,a) \tkzDrawSegments[vect](A,B A,C) \tkzMarkRightAngle[fill=gray!20](B,A,C) \tkzLabelPoints[above=3pt](A,B,C) diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-polygons.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-polygons.tex index 24df108ab1..95df8ef060 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-polygons.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-polygons.tex @@ -43,7 +43,7 @@ Note the inversion of the first two points and the result. \tkzMarkRightAngles(A,B,C) \tkzDrawPoints(A,B) \tkzDrawPoint[new](C) \tkzLabelPoints(A,B) - \tkzLabelPoints[new](C) + \tkzLabelPoints[new,above](C) \end{tikzpicture} \end{tkzexample} @@ -61,7 +61,7 @@ Note the inversion of the first two points and the result. \tkzDrawPolygon(C,B,I,J) \tkzDrawPolygon(B,A,E,F) \tkzLabelSegment(A,C){$a$} -\tkzLabelSegment(C,B){$b$} +\tkzLabelSegment[right](C,B){$b$} \tkzLabelSegment[swap](A,B){$c$} \end{tikzpicture} \end{tkzexample} @@ -171,9 +171,10 @@ Without the previous macro here is how to get the golden rectangle. \tkzDefPointBy[projection=onto D--C ](E) \tkzGetPoint{H} \tkzDrawArc[style=dashed](I,E)(D) -\tkzDrawSquare(A,B) +\tkzDrawPolygon(A,B,C,D) \tkzDrawPoints(C,D,E,F,H) -\tkzLabelPoints(A,B,C,D,E,F,H) +\tkzLabelPoints(A,B,C,D,E,F,H) +\tkzLabelPoints[above](C,D,F,H) \tkzDrawSegments[style=dashed,color=gray]% (E,F C,F B,E F,H H,C E,H) \end{tikzpicture} diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-presentation.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-presentation.tex index e4530e276a..82241a6392 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-presentation.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-presentation.tex @@ -55,23 +55,23 @@ The fourth tutorial of the \emph{PgfManual} is about geometric constructions. \e \medskip -\hspace*{1cm}\vbox{\orange |\usepackage{tikz}|\\ +\hspace*{1cm}\vbox{\color{orange} |\usepackage{tikz}|\\ |\usetikzlibrary{calc,intersections,through,backgrounds}|} \medskip -\hspace*{1cm}\vbox{\red |\usepackage{tkz-euclide}|} +\hspace*{1cm}\vbox{\color{red} |\usepackage{tkz-euclide}|} \medskip How to get the line AB ? To get this line, we use two fixed points.\\ \medskip -\hspace*{1cm}\vbox{\orange +\hspace*{1cm}\vbox{\color{orange} |\coordinate [label=left:$A$] (A) at (0,0);|\\ |\coordinate [label=right:$B$] (B) at (1.25,0.25);|\\ |\draw (A) -- (B);|} \medskip -\hspace*{1cm}\vbox{\red +\hspace*{1cm}\vbox{\color{red} |\tkzDefPoint(0,0){A}|\\ |\tkzDefPoint(1.25,0.25){B}|\\ |\tkzDrawSegment(A,B)|\\ @@ -81,14 +81,14 @@ How to get the line AB ? To get this line, we use two fixed points.\\ We want to draw a circle around the points $A$ and $B$ whose radius is given by the length of the line AB. \medskip -\hspace*{1cm}\vbox{\orange +\hspace*{1cm}\vbox{\color{orange} |\draw let \p1 = ($ (B) - (A) $),|\\ |\n2 = {veclen(\x1,\y1)} in|\\ | (A) circle (\n2)|\\ | (B) circle (\n2);|} \medskip -\hspace*{1cm}\vbox{\red +\hspace*{1cm}\vbox{\color{red} |\tkzDrawCircles(A,B B,A)| } @@ -96,7 +96,7 @@ The intersection of the circles $\mathcal{D}$ and $\mathcal{E}$ \medskip -\hspace*{1cm}\vbox{\orange +\hspace*{1cm}\vbox{\color{orange} |draw [name path=A--B] (A) -- (B);|\\ |node (D) [name path=D,draw,circle through=(B),label=left:$D$] at (A) {}; |\\ |node (E) [name path=E,draw,circle through=(A),label=right:$E$] at (B) {};|\\ @@ -106,17 +106,17 @@ The intersection of the circles $\mathcal{D}$ and $\mathcal{E}$ |node [fill=red,inner sep=1pt,label=-45:$F$] at (F) {};|\\} \medskip -\hspace*{1cm}\vbox{\red |\tkzInterCC(A,B)(B,A) \tkzGetPoints{C}{X}|\\} +\hspace*{1cm}\vbox{\color{red} |\tkzInterCC(A,B)(B,A) \tkzGetPoints{C}{X}|\\} How to draw points : \medskip -\hspace*{1cm}\vbox{\orange |\foreach \point in {A,B,C}|\\ +\hspace*{1cm}\vbox{\color{orange} |\foreach \point in {A,B,C}|\\ |\fill [black,opacity=.5] (\point) circle (2pt);|\\} \medskip -\hspace*{1cm}\vbox{\red| \tkzDrawPoints[fill=gray,opacity=.5](A,B,C)|\\} +\hspace*{1cm}\vbox{\color{red}| \tkzDrawPoints[fill=gray,opacity=.5](A,B,C)|\\} \subsubsection{Complete code with \pkg{tkz-euclide}} @@ -126,7 +126,6 @@ We need to define colors |\colorlet{output}{red!70!black}|\\ |\colorlet{triangle}{orange!40} | - \begin{tkzexample}[vbox,small] \colorlet{input}{red!80!black} \colorlet{output}{red!70!black} @@ -140,17 +139,17 @@ We need to define colors \tkzDrawSegment[input](A,B) \tkzDrawSegments[red](A,C B,C) \tkzDrawCircles[help lines](A,B B,A) - + \tkzDrawPoints[fill=gray,opacity=.5](A,B,C) + \tkzLabelPoints(A,B) - \tkzLabelCircle[below=12pt](A,B)(180){$D$} - \tkzLabelCircle[above=12pt](B,A)(180){$E$} + \tkzLabelCircle[below=12pt](A,B)(180){$\mathcal{D}$} + \tkzLabelCircle[above=12pt](B,A)(180){$\mathcal{E}$} \tkzLabelPoint[above,red](C){$C$} - \tkzDrawPoints[fill=gray,opacity=.5](A,B,C) - + \end{tikzpicture} \end{tkzexample} -\subsubsection*{Book I, Proposition II \_Euclid's Elements\_} +\subsubsection{Book I, Proposition II \_Euclid's Elements\_} \begin{tikzpicture} \node [mybox,title={Book I, Proposition II \_Euclid's Elements\_}] (box){% @@ -165,7 +164,7 @@ Explanation In the first part, we need to find the midpoint of the straight line $AB$. With \TIKZ\ we can use the calc library \medskip -\hspace*{1cm}\vbox{\orange |\coordinate [label=left:$A$] (A) at (0,0);|\\ +\hspace*{1cm}\vbox{\color{orange} |\coordinate [label=left:$A$] (A) at (0,0);|\\ |\coordinate [label=right:$B$] (B) at (1.25,0.25);|\\ |\draw (A) -- (B);|\\ |\node [fill=red,inner sep=1pt,label=below:$X$] (X) at ($ (A)!.5!(B) $) {};|\\} @@ -181,7 +180,7 @@ With \pkg{tkz-euclide} we have a macro \tkzcname{tkzDefMidPoint}, we get the poi Then we need to construct a triangle equilateral. It's easy with \pkg{tkz-euclide} . With TikZ you need some effort because you need to use the midpoint $X$ to get the point $D$ with trigonometry calculation. \medskip -\hspace*{1cm}\vbox{\orange +\hspace*{1cm}\vbox{\color{orange} |\node [fill=red,inner sep=1pt,label=below:$X$] (X) at ($ (A)!.5!(B) $) {}; | \\ |\node [fill=red,inner sep=1pt,label=above:$D$] (D) at | \\ |($ (X) ! {sin(60)*2} ! 90:(B) $) {}; | \\ @@ -189,25 +188,25 @@ Then we need to construct a triangle equilateral. It's easy with \pkg{tkz-euclid } \\ \medskip -\hspace*{1cm}\vbox{\red |\tkzDefTriangle[equilateral](A,B) \tkzGetPoint{D}|}\\ +\hspace*{1cm}\vbox{\color{red} |\tkzDefTriangle[equilateral](A,B) \tkzGetPoint{D}|}\\ We can draw the triangle at the end of the picture with \medskip -\hspace*{1cm}\vbox{\red |\tkzDrawPolygon{A,B,C}|} +\hspace*{1cm}\vbox{\color{red} |\tkzDrawPolygon{A,B,C}|} \medskip We know how to draw the circle $\mathcal{H}$ around $B$ through $C$ and how to place the points $E$ and $F$ \medskip -\hspace*{1cm}\vbox{\orange +\hspace*{1cm}\vbox{\color{orange} |\node (H) [label=135:$H$,draw,circle through=(C)] at (B) {};| \\ |\draw (D) -- ($ (D) ! 3.5 ! (B) $) coordinate [label=below:$F$] (F);| \\ |\draw (D) -- ($ (D) ! 2.5 ! (A) $) coordinate [label=below:$E$] (E);|} \\ \medskip -\hspace*{1cm}\vbox{\red |\tkzDrawCircle(B,C)|\\ +\hspace*{1cm}\vbox{\color{red} |\tkzDrawCircle(B,C)|\\ |\tkzDrawLines[add=0 and 2](D,A D,B)|} \medskip @@ -217,7 +216,7 @@ Intersecting a Line and a Circle : here we search the intersection of the circle The infinite straight line $DB$ intercepts the circle but with \TIKZ\ we need to extend the lines $DB$ and that can be done using partway calculations. We get the point $F$ and $BF$ or $DF$ intercepts the circle \medskip -\hspace*{1cm}\vbox{\orange| \node (H) [label=135:$H$,draw,circle through=(C)] at (B) {}; | \\ +\hspace*{1cm}\vbox{\color{orange}| \node (H) [label=135:$H$,draw,circle through=(C)] at (B) {}; | \\ |\path let \p1 = ($ (B) - (C) $) in| \\ | coordinate [label=left:$G$] (G) at ($ (B) ! veclen(\x1,\y1) ! (F) $); | \\ |\fill[red,opacity=.5] (G) circle (2pt);|} \\ @@ -226,23 +225,23 @@ The infinite straight line $DB$ intercepts the circle but with \TIKZ\ we need to Like the intersection of two circles, it's easy to find the intersection of a line and a circle with \pkg{tkz-euclide}. We don't need $F$ \medskip -\hspace*{1cm}\vbox{\red | \tkzInterLC(B,D)(B,C)\tkzGetFirstPoint{G}|} +\hspace*{1cm}\vbox{\color{red} | \tkzInterLC(B,D)(B,C)\tkzGetFirstPoint{G}|} \medskip There are no more difficulties. Here the final code with some simplications. We draw the circle $\mathcal{K}$ with center $D$ and passing through $G$. It intersects the line $AD$ at point $L$. $AL = BC$. -\hspace*{1cm}\vbox{\red | \tkzDrawCircle(D,G)|} -\hspace*{1cm}\vbox{\red | \tkzInterLC(D,A)(D,G)\tkzGetSecondPoint{L}|} +\hspace*{1cm}\vbox{\color{red} | \tkzDrawCircle(D,G)|} +\hspace*{1cm}\vbox{\color{red} | \tkzInterLC(D,A)(D,G)\tkzGetSecondPoint{L}|} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=1.5] \tkzDefPoint(0,0){A} \tkzDefPoint(0.75,0.25){B} \tkzDefPoint(1,1.5){C} -\tkzDefTriangle[equilateral](A,B) \tkzGetPoint{D} -\tkzInterLC(B,D)(B,C)\tkzGetFirstPoint{G} -\tkzInterLC(D,A)(D,G)\tkzGetSecondPoint{L} +\tkzDefTriangle[equilateral](A,B) \tkzGetPoint{D} +\tkzInterLC[near](D,B)(B,C) \tkzGetSecondPoint{G} +\tkzInterLC[near](D,A)(D,G) \tkzGetFirstPoint{L} \tkzDrawCircles(B,C D,G) \tkzDrawLines[add=0 and 2](D,A D,B) \tkzDrawSegment(A,B) @@ -251,12 +250,12 @@ We draw the circle $\mathcal{K}$ with center $D$ and passing through $G$. It int \tkzDrawPoints[fill=gray](A,B,C) \tkzLabelPoints[left,red](A) \tkzLabelPoints[below right,red](L) -\tkzLabelCircle[above=12pt](B,G)(90){$\mathcal{H}$} +\tkzLabelCircle[above](B,C)(20){$\mathcal{(H)}$} \tkzLabelPoints[above left](D) -\tkzLabelPoints[below](G) +\tkzLabelPoints[above](G) \tkzLabelPoints[above,red](C) \tkzLabelPoints[right,red](B) -\tkzLabelCircle[above=12pt](D,G)(90){$\mathcal{K}$} +\tkzLabelCircle[below](D,G)(-90){$\mathcal{(K)}$} \end{tikzpicture} \end{tkzexample} @@ -396,11 +395,11 @@ Let's analyze the figure \[\widehat{BCA}=90^\circ -\alpha/2 \] \item Finally \[\widehat{CBD}=\alpha=36^\circ \] - the triangle $CBD$ is a "gold" triangle. + the triangle $CBD$ is a "golden" triangle. \end{enumerate} \vspace*{24pt} -How construct a gold triangle or an angle of $36^\circ$? +How construct a golden triangle or an angle of $36^\circ$? \begin{enumerate} \item We place the fixed points $C$ and $D$. |\tkzDefPoint(0,0){C}| and |\tkzDefPoint(4,0){D}|; @@ -411,9 +410,8 @@ How construct a gold triangle or an angle of $36^\circ$? \item Now the two arcs with center $C$ and $D$ and radius $Cn$ define the point $B$. \end{enumerate} - -\begin{minipage}{.4\textwidth} - \begin{tikzpicture} +\begin{tkzexample}[latex=7cm,small] +\begin{tikzpicture} \tkzDefPoint(0,0){C} \tkzDefPoint(4,0){D} \tkzDefSquare(C,D) @@ -433,64 +431,16 @@ How construct a gold triangle or an angle of $36^\circ$? \endpgfinterruptboundingbox \tkzDrawPolygon(B,...,D) \tkzDrawPoints(B,C,D,e,f,m,n) - \tkzLabelPoints(B,C,D,e,f,m,n) - \end{tikzpicture} -\end{minipage} -\begin{minipage}{.6\textwidth} - \begin{tkzexample}[code only,small] - \begin{tikzpicture} - \tkzDefPoint(0,0){C} - \tkzDefPoint(4,0){D} - \tkzDefSquare(C,D) - \tkzGetPoints{e}{f} - \tkzDefMidPoint(C,f) - \tkzGetPoint{m} - \tkzInterLC(C,f)(m,e) - \tkzGetSecondPoint{n} - \tkzInterCC[with nodes](C,C,n)(D,C,n) - \tkzGetFirstPoint{B} - \tkzDrawSegment[brown,dashed](f,n) - \tkzDrawPolygon[brown,dashed](C,D,e,f) - \tkzDrawArc[brown,dashed](m,e)(n) - \tkzCompass[brown,dashed,delta=20](C,B) - \tkzCompass[brown,dashed,delta=20](D,B) - \tkzDrawPoints(C,D,B) - \tkzDrawPolygon(B,...,D) - \end{tikzpicture} - \end{tkzexample} -\end{minipage} + \tkzLabelPoints[above](B) + \tkzLabelPoints[left](f,m,n) + \tkzLabelPoints(C,D) + \tkzLabelPoints[right](e) +\end{tikzpicture} +\end{tkzexample} After building the golden triangle $BCD$, we build the point $A$ by noticing that $BD=DA$. Then we get the point $E$ and finally the point $F$. This is done with already intersections of defined objects (line and circle). -\begin{tkzexample}[code only,small] - \begin{tikzpicture} - \tkzDefPoint(0,0){C} - \tkzDefPoint(4,0){D} - \tkzDefSquare(C,D) - \tkzGetPoints{e}{f} - \tkzDefMidPoint(C,f) - \tkzGetPoint{m} - \tkzInterLC(C,f)(m,e) - \tkzGetSecondPoint{n} - \tkzInterCC[with nodes](C,C,n)(D,C,n) - \tkzGetFirstPoint{B} - \tkzInterLC(C,D)(D,B) \tkzGetSecondPoint{A} - \tkzInterLC(B,A)(B,D) \tkzGetSecondPoint{E} - \tkzInterLL(B,D)(C,E) \tkzGetPoint{F} - \tkzDrawPoints(C,D,B) - \tkzDrawPolygon(B,...,D) - \tkzDrawPolygon(B,C,D) - \tkzDrawSegments(D,A A,B C,E) - \tkzDrawArc[delta=10](B,C)(E) - \tkzDrawPoints(A,...,F) - \tkzMarkRightAngle(B,F,C) - \tkzMarkAngles(C,B,D E,A,D) - \tkzLabelAngles[pos=1.5](C,B,D E,A,D){$\alpha$} - \tkzLabelPoints[below](A,C,D,E) - \tkzLabelPoints[above right](B,F) - \end{tikzpicture} -\end{tkzexample} \subsubsection{Part II: two others methods with golden and euclid triangle} @@ -502,9 +452,9 @@ After building the golden triangle $BCD$, we build the point $A$ by noticing tha \begin{tikzpicture} \tkzDefPoint(0,0){C} \tkzDefPoint(4,0){D} - \tkzDefTriangle[euclid](C,D) + \tkzDefTriangle[golden](C,D) \tkzGetPoint{B} - \tkzDefTriangle[euclid](B,C) + \tkzDefTriangle[golden](B,C) \tkzGetPoint{A} \tkzInterLC(B,A)(B,D) \tkzGetSecondPoint{E} \tkzInterLL(B,D)(C,E) \tkzGetPoint{F} @@ -565,7 +515,7 @@ $IB=a$, $AI=1$ \vspace{12pt} \hypertarget{firstex}{} - +\begin{tkzexample}[vbox,small] \begin{tikzpicture}[scale=1,ra/.style={fill=gray!20}] % fixed points \tkzDefPoint(0,0){A} @@ -588,6 +538,7 @@ $IB=a$, $AI=1$ \tkzLabelPoint[right](B){$B(10,0)$} \tkzLabelSegment[right=4pt](I,C){$\sqrt{a^2}=a \ (a>0)$} \end{tikzpicture} +\end{tkzexample} \emph{Comments} @@ -654,34 +605,6 @@ The following code consists of several parts: \tkzLabelSegment[right=4pt](I,C){$\sqrt{a^2}=a \ (a>0)$} \end{tkzltxexample} - -\item The full code: - - -\begin{tkzexample}[code only] - \begin{tikzpicture}[scale=1,ra/.style={fill=gray!20}] - % fixed points - \tkzDefPoint(0,0){A} - \tkzDefPoint(1,0){I} - % calculation - \tkzDefPointBy[homothety=center A ratio 10 ](I) \tkzGetPoint{B} - \tkzDefMidPoint(A,B) \tkzGetPoint{M} - \tkzDefPointWith[orthogonal](I,M) \tkzGetPoint{H} - \tkzInterLC(I,H)(M,B) \tkzGetSecondPoint{C} - \tkzDrawSegment[style=orange](I,C) - \tkzDrawArc(M,B)(A) - \tkzDrawSegment[dim={$1$,-16pt,}](A,I) - \tkzDrawSegment[dim={$a/2$,-10pt,}](I,M) - \tkzDrawSegment[dim={$a/2$,-16pt,}](M,B) - \tkzMarkRightAngle[ra](A,I,C) - \tkzDrawPoints(I,A,B,C,M) - \tkzLabelPoint[left](A){$A(0,0)$} - \tkzLabelPoints[above right](I,M) - \tkzLabelPoints[above left](C) - \tkzLabelPoint[right](B){$B(10,0)$} - \tkzLabelSegment[right=4pt](I,C){$\sqrt{a^2}=a \ (a>0)$} - \end{tikzpicture} -\end{tkzexample} \end{itemize} \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-rapporteur.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-rapporteur.tex index 5ee7fd055c..3a6588673f 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-rapporteur.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-rapporteur.tex @@ -1,7 +1,10 @@ \section{Protractor} Based on an idea by Yves Combe, the following macro allows you to draw a protractor. The operating principle is even simpler. Just name a half-line (a ray). The protractor will be placed on the origin $O$, the direction of the half-line is given by $A$. The angle is measured in the direct direction of the trigonometric circle. +\subsection{The macro \tkzcname{tkzProtractor}} % (fold) +\label{sub:the_macro_tkzcname_tkzprotractor} +% subsection the_macro_tkzcname_tkzprotractor (end) \begin{NewMacroBox}{tkzProtractor}{\oarg{local options}\parg{$O,A$}}% \begin{tabular}{lll}% options & default & definition \\ @@ -12,7 +15,7 @@ options & default & definition \\ \end{tabular} \end{NewMacroBox} -\subsection{The circular protractor} +\subsubsection{The circular protractor} Measuring in the forward direction \begin{tkzexample}[latex=7cm,small] @@ -27,7 +30,7 @@ Measuring in the forward direction \end{tikzpicture} \end{tkzexample} -\subsection{The circular protractor, transparent and returned} +\subsubsection{The circular protractor, transparent and returned} \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=.5] diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-rnd.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-rnd.tex index ac1efde3ea..b902626e22 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-rnd.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-rnd.tex @@ -39,7 +39,8 @@ options & default & definition \\ \tkzDefRectangle(A,C)\tkzGetPoints{B}{D} \tkzDrawPolygon[red](A,...,D) \tkzDrawPoints(A,...,E) - \tkzLabelPoints(A,...,E) + \tkzLabelPoints(A,B) + \tkzDrawPoints[above](C,D,E) \end{tikzpicture} \end{tkzexample} @@ -66,11 +67,11 @@ options & default & definition \\ \tkzGetPoint{D} \tkzDefRandPointOn[disk through=center A through B] \tkzGetPoint{E} -\tkzDrawCircle[R](A,\rAB) +\tkzDrawCircle(A,B) \tkzDrawPoints(A,B) \tkzLabelPoints(A,B) \tkzDrawPoints[red](C,D,E) -\tkzLabelPoints[red](C,D,E) +\tkzLabelPoints[red,right](C,D,E) \end{tikzpicture} \end{tkzexample} diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-show.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-show.tex index 01bcc1bce7..e1f84630c8 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-show.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-show.tex @@ -23,6 +23,7 @@ options & default & definition \\ \bottomrule \end{tabular} +\medskip You have to add, of course, all the styles of \TIKZ\ for tracings\dots \end{NewMacroBox} @@ -63,7 +64,7 @@ You have to add, of course, all the styles of \TIKZ\ for tracings\dots \tkzGetPoint{H} \tkzShowLine[bisector,size=2,gap=3,blue](B,A,C) \tkzShowLine[bisector,size=2,gap=3,blue](C,B,A) - \tkzDrawCircle[radius,color=blue,% + \tkzDrawCircle[color=blue,% line width=.2pt](I,H) \tkzDrawSegments[color=red!50](I,tkzPointResult) \tkzDrawLines[add=0 and -0.3,color=red!50](A,a B,b) @@ -107,7 +108,6 @@ options & default & definition \\ \subsubsection{Example of the use of \tkzcname{tkzShowTransformation}} - \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.6] \tkzDefPoint(0,0){O} \tkzDefPoint(2,-2){A} @@ -148,15 +148,16 @@ You'll find this figure again, but without the construction features. \tkzDefPointBy[projection=onto A--B](I) \tkzGetPoint{J} \tkzInterLC(I,A)(O,A) \tkzGetPoints{M}{M'} - \tkzInterLC(I,B)(O,A) \tkzGetPoints{N}{N'} - \tkzDrawSemiCircle[diameter](A,B) + \tkzInterLC(I,B)(O,A) \tkzGetPoints{N}{N'} + \tkzDefMidPoint(A,B) \tkzGetPoint{M} + \tkzDrawSemiCircle(M,B) \tkzDrawSegments(I,A I,B A,B B,M A,N) \tkzMarkRightAngles(A,M,B A,N,B) \tkzDrawSegment[style=dashed,color=blue](I,J) \tkzShowTransformation[projection=onto A--B, color=red,size=3,gap=-3](I) \tkzDrawPoints[color=red](M,N) - \tkzDrawPoints[color=blue](O,A,B,I) + \tkzDrawPoints[color=blue](O,A,B,I,M) \tkzLabelPoints(O) \tkzLabelPoints[above right](N,I) \tkzLabelPoints[below left](M,A) diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-styles.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-styles.tex index c7afa131bf..b81098e5ab 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-styles.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-styles.tex @@ -32,7 +32,7 @@ This is how the points are defined : It is of course possible to use \tkzcname{tikzset} but you can use a macro provided by the package. You can use the macro \tkzcname{tkzSetUpPoint} globally or locally, \\ Let's look at this possibility. -\subsubsection{Use of \tkzcname{tkzSetUpPoint}} +\subsection{Use of \tkzcname{tkzSetUpPoint}} \begin{NewMacroBox}{tkzSetUpPoint}{\oarg{local options}}% \begin{tabular}{lll}% @@ -51,6 +51,8 @@ options & default & definition \\ First of all here is a figure created with the styles of my documentation, then the style of the points is modified within the environment \tkzNameEnv{tikzspicture}. You can use the macro \tkzcname{tkzSetUpPoint} globally or locally, If you place this macro in your preamble or before your first figure then the point style will be valid for all figures in your document. It will be possible to use another style locally by using this command within an environment \tkzNameEnv{tikzpicture}.\\ Let's look at this possibility. + + \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture} \tkzDefPoints{0/0/A,5/0/B,3/2/C,3/1/D} @@ -61,6 +63,7 @@ You can use the macro \tkzcname{tkzSetUpPoint} globally or locally, If you place \end{tikzpicture} \end{tkzexample} +\subsubsection{Local style} The style of the points is modified locally in the second figure \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture} @@ -74,6 +77,7 @@ The style of the points is modified locally in the second figure \end{tikzpicture} \end{tkzexample} +\subsubsection{\tkzname{Style} and \tkzname{scope}} The points get back the initial style. Point D has a new style limited by the environment \tkzNameEnv{scope}. It is also possible to use |{...}| orThe points get back the initial style. Point $D$ has a new style limited by the environment \tkzNameEnv{scope}. It is also possible to use |{...}| or |\begingoup ... \endgroup|. \begin{tkzexample}[latex=7cm,small] @@ -120,7 +124,27 @@ The points get back the initial style. Point D has a new style limited by the en \section{Lines style} -\subsubsection{Use of \tkzcname{tkzSetUpLine}} \label{tkzsetupline} +You have several possibilities to change the style of a line. You can modify the style of a line with \tkzcname{tkzSetUpLine} or directly modify the style of the lines with |\tikzset{line style/.style = ... }| + +Reminder about \tkzname{line width} : There are a number of predefined styles that provide more “natural” ways of setting the line width. You can also redefine these styles. + + +\medskip +\begin{tabular}{cc} +predefined style & value of \tkzname{line width} \cr +\midrule +ultra thin & 0.1 pt \cr +very thin & 0.2 pt \cr +thin & 0.4 pt \cr +semithick & 0.6 pt \cr +thick & 0.8 pt \cr +very thick & 1.2 pt \cr +ultra thick & 1.6 pt \cr +\midrule +\end{tabular} + + +\subsection{Use of \tkzcname{tkzSetUpLine}} \label{tkzsetupline} It is a macro that allows you to define the style of all the lines. \begin{NewMacroBox}{tkzSetUpLine}{\oarg{local options}}% @@ -177,7 +201,9 @@ options & default & definition \\ \tkzDrawLine(A',B') \tkzCompass(A',B') \tkzDrawSegments(A,B C,D E,F) -\tkzDrawCircles[R](A',{\rCD} B',\rEF) +\tkzDefCircle[R](A',\rCD) \tkzGetPoint{a'} +\tkzDefCircle[R](B',\rEF)\tkzGetPoint{b'} +\tkzDrawCircles(A',a' B',b') \begin{scope} \tkzSetUpLine[color=red] \tkzDrawSegments(A',I B',I) @@ -201,6 +227,7 @@ options & default & definition \\ \section{Arc style} +\subsection{The macro \tkzcname{tkzSetUpArc}} \begin{NewMacroBox}{tkzSetUpArc}{\oarg{local options}}% \begin{tabular}{lll}% options & default & definition \\ @@ -211,33 +238,36 @@ options & default & definition \\ \end{tabular} \end{NewMacroBox} +\subsubsection{Use of \tkzcname{tkzSetUpArc}} \begin{tkzexample}[latex=7cm,small] - \begin{tikzpicture} - \def\r{3} \def\angle{200} - \tkzSetUpArc[delta=5,color=purple,style=dashed] - \tkzSetUpLabel[font=\scriptsize,red] - \tkzDefPoint(0,0){O} - \tkzDefPoint(\angle:\r){A} - \tkzInterCC(O,A)(A,O) \tkzGetPoints{C'}{C} - \tkzInterCC(O,A)(C,O) \tkzGetPoints{D'}{D} - \tkzInterCC(O,A)(D,O) \tkzGetPoints{X'}{X} - \tkzDrawCircle(O,A) - \tkzDrawArc(A,C')(C) - \tkzDrawArc(C,O)(D) - \tkzDrawArc(D,O)(X) - \tkzDrawLine[add=.1 and .1](A,X) - \tkzDrawPoints(O,A) - \tkzDrawPoints[new](C,C',D,X) - \tkzLabelPoints[below left](O,A) - \tkzLabelPoints[below](C,C') - \tkzLabelPoints[below right](X) - \tkzLabelPoints[above](D) - \end{tikzpicture} +\begin{tikzpicture} +\def\r{3} \def\angle{200} +\tkzSetUpArc[delta=10,color=purple,line width=.2pt] +\tkzSetUpLabel[font=\scriptsize,red] +\tkzDefPoint(0,0){O} +\tkzDefPoint(\angle:\r){A} +\tkzInterCC(O,A)(A,O) \tkzGetPoints{C'}{C} +\tkzInterCC(O,A)(C,O) \tkzGetPoints{D'}{D} +\tkzInterCC(O,A)(D,O) \tkzGetPoints{X'}{X} +\tkzDrawCircle(O,A) +\tkzDrawArc(A,C')(C) +\tkzDrawArc(C,O)(D) +\tkzDrawArc(D,O)(X) +\tkzDrawLine[add=.1 and .1](A,X) +\tkzDrawPoints(O,A) +\tkzSetUpPoint[size=3,color=purple,fill=purple!10] +\tkzDrawPoints(C,C',D,X) +\tkzLabelPoints[below left](O,A) +\tkzLabelPoints[below](C') +\tkzLabelPoints[below right](X) +\tkzLabelPoints[above](C,D) +\end{tikzpicture} \end{tkzexample} \section{Compass style, configuration macro \tkzcname{tkzSetUpCompass}} The following macro will help to understand the construction of a figure by showing the compass traces necessary to obtain certain points. +\subsection{The macro \tkzcname{tkzSetUpCompass} } \begin{NewMacroBox}{tkzSetUpCompass}{\oarg{local options}}% \begin{tabular}{lll}% options & default & definition \\ @@ -279,7 +309,7 @@ options & default & definition \\ \tkzInterLL(A,a)(B,b) \tkzGetPoint{I} \tkzDefPointBy[projection= onto A--B](I) \tkzGetPoint{H} -\tkzDrawCircle[radius,new](I,H) +\tkzDrawCircle[new](I,H) \tkzDrawSegments[new](I,H) \tkzDrawLines[add=0 and .2,new](A,I B,I) \end{tikzpicture} @@ -290,24 +320,27 @@ options & default & definition \\ \section{Label style} + +\subsection{The macro \tkzcname{tkzSetUpLabel} } The macro \tkzcname{tkzSetUpLabel} is used to define the style of the point labels. \begin{NewMacroBox}{tkzSetUpStyle}{\oarg{local options}}% The options are the same as those of \TIKZ \end{NewMacroBox} +\subsubsection{Use of \tkzcname{tkzSetUpLabel}} \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.75] \tkzSetUpLabel[font=\scriptsize,red] - \tkzSetUpStyle[line width=1pt,teal,<->]{XY} + \tkzSetUpStyle[line width=1pt,teal]{XY} \tkzInit[xmin=-3,xmax=3,ymin=-3,ymax=3] - \tkzDrawX[XY] - \tkzDrawY[XY] + \tkzDrawX[noticks,XY] + \tkzDrawY[noticks,XY] \tkzDefPoints{1/0/A,0/1/B,-1/0/C,0/-1/D} \tkzDrawPoints[teal,fill=teal!30,size=6](A,...,D) - \tkzLabelPoint[above right](A){$(1,0)$} - \tkzLabelPoint[above right](B){$(0,1)$} - \tkzLabelPoint[above left](C){$(-1,0)$} - \tkzLabelPoint[below left](D){$(0,-1)$} + \tkzLabelPoint[above right](A){$A(1,0)$} + \tkzLabelPoint[above right](B){$B(0,1)$} + \tkzLabelPoint[above left](C){$C(-1,0)$} + \tkzLabelPoint[below left](D){$D(0,-1)$} \end{tikzpicture} \end{tkzexample} @@ -315,10 +348,12 @@ The macro \tkzcname{tkzSetUpLabel} is used to define the style of the point labe \section{Own style} You can set your own style with \tkzcname{tkzSetUpStyle} +\subsection{The macro \tkzcname{tkzSetUpStyle} } \begin{NewMacroBox}{tkzSetUpStyle}{\oarg{local options}}% The options are the same as those of \TIKZ \end{NewMacroBox} +\subsubsection{Use of \tkzcname{tkzSetUpStyle}} \begin{tkzexample}[latex=2cm,small] \begin{tikzpicture} \tkzSetUpStyle[color=blue!20!black,fill=blue!20]{mystyle} @@ -485,7 +520,6 @@ Some users of my package have asked me to be able to place an arrow on each side You can change this style. With \tkzname{tkz arrows} you can an arrow on each segment of a polygon \subsubsection{Arrow on each segment with \tkzname{tkz arrows} } - \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture} \tkzDefPoints{0/0/A,3/0/B} diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-tools.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-tools.tex index dbc6ea7d20..f91ec9445a 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-tools.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-tools.tex @@ -1,4 +1,4 @@ -\section{Miscellaneous tools} +\section{Miscellaneous tools and mathematical tools} \subsection{Duplicate a segment} This involves constructing a segment on a given half-line of the same length as a given segment. @@ -17,9 +17,11 @@ arguments & example & explanation \\ \end{tabular} \medskip -The macro \tkzcname{tkzDuplicateLength} is identical to this one. +\emph{The macro \tkzcname{tkzDuplicateLength} is identical to this one. } \end{NewMacroBox} +\subsubsection{Use of\tkzcname{tkzDuplicateSegment}} + \begin{tkzexample}[latex=6cm,small] \begin{tikzpicture}[scale=.5] \tkzDefPoints{0/0/A,2/-3/B,2/5/C} @@ -48,7 +50,7 @@ The macro \tkzcname{tkzDuplicateLength} is identical to this one. \tkzDrawLines(A,B B,C A,D) \tkzDrawArc[orange,delta=10](B,D)(I) \tkzDrawPoints(A,B,D,C,M,I) - \tkzLabelPoints(A,B,D,C,M,I) + \tkzLabelPoints[below left](A,B,D,C,M,I) \end{tikzpicture} \end{tkzexample} @@ -73,7 +75,7 @@ The macro \tkzcname{tkzDuplicateLength} is identical to this one. \tkzCompass(B,F) \tkzDrawPolygon[new](A,B,F) \tkzDrawPoints(A,...,H) - \tkzLabelPoints(A,...,H) + \tkzLabelPoints[below left](A,...,H) \end{tikzpicture} \end{tkzexample} @@ -92,7 +94,7 @@ defines the macro \tkzcname{dAB}. \toprule arguments & example & explanation \\ \midrule -\TAline{(pt1,pt2)\{name of macro\}} {\tkzcname{tkzCalcLength}[pt](A,B)}{\tkzcname{dAB} gives $AB$ in pt} +\TAline{(pt1,pt2)\{name of macro\}} {\tkzcname{tkzCalcLength}(A,B)}{\tkzcname{dAB} gives $AB$ in cm} \bottomrule \end{tabular} @@ -127,7 +129,7 @@ Only one option \tkzDrawArc[R](B,\dAB)(80,110) \tkzDrawPoints(A,B,C,D) \tkzDrawSegments[color=gray,style=dashed](B,C C,D) - \tkzLabelPoints(A,B,C,D) + \tkzLabelPoints[below left](A,B,C,D) \end{tikzpicture} \end{tkzexample} @@ -139,13 +141,13 @@ The macro \tkzcname{tkzDefCircle[radius](A,B)} defines the radius that we retrie \begin{tikzpicture}[scale=.5] \tkzDefPoint(0,0){A} \tkzDefPoint(3,-4){B} - \tkzDefCircle[through](A,B) - \tkzGetLength{rABcm} + \tkzDefMidPoint(A,B) \tkzGetPoint{M} + \tkzCalcLength(M,B)\tkzGetLength{rAB} \tkzDrawCircle(A,B) \tkzDrawPoints(A,B) \tkzLabelPoints(A,B) \tkzDrawSegment[dashed](A,B) - \tkzLabelSegment(A,B){$\pgfmathprintnumber{\rABcm}$} + \tkzLabelSegment(A,B){$\pgfmathprintnumber{\rAB}$} \end{tikzpicture} \end{tkzexample} @@ -183,7 +185,7 @@ arguments & example & explanation \\ \end{tabular} \medskip -\noindent{The result can be used with \tkzcname{len}\tkzname{pt}} +\emph{The result can be used with \tkzcname{len}\ \tkzname{pt}} \end{NewMacroBox} @@ -203,7 +205,7 @@ arguments & example & explanation \\ \end{tabular} \medskip -Stores in two macros the coordinates of a point. If the name of the macro is \tkzname{p}, then \tkzcname{px} and \tkzcname{py} give the coordinates of the chosen point with the cm as unit. +\emph{Stores in two macros the coordinates of a point. If the name of the macro is \tkzname{p}, then \tkzcname{px} and \tkzcname{py} give the coordinates of the chosen point with the cm as unit.} \end{NewMacroBox} \subsubsection{Coordinate transfer with \tkzcname{tkzGetPointCoord}} @@ -249,7 +251,8 @@ arguments & example & explanation \\ \emph{The points have exchanged their coordinates.} \end{NewMacroBox} -\subsubsection{Example} + +\subsubsection{Use of \tkzcname{tkzSwapPoints}} \begin{tkzexample}[width=6cm,small] \begin{tikzpicture} @@ -259,4 +262,217 @@ arguments & example & explanation \\ \tkzLabelPoints(O,A,B) \end{tikzpicture} \end{tkzexample} + +\subsection{Dot Product} +In Euclidean geometry, the dot product of the Cartesian coordinates of two vectors is widely used. + +\begin{NewMacroBox}{tkzDotProduct}{\parg{$pt1$,$pt2$,$pt3$}}% + The dot product of two vectors $\overrightarrow{u} = [a,b]$ and $\overrightarrow{v} = [a',b']$ is defined as: $\overrightarrow{u}\cdot \overrightarrow{v} = aa' + bb'$ + +$\overrightarrow{u} = \overrightarrow{pt1pt2}$ $\overrightarrow{v} = \overrightarrow{pt1pt3}$ + +\begin{tabular}{lll}% +arguments & example & explanation \\ +\midrule +\TAline{(pt1,pt2,pt3)} {\tkzcname{tkzDotProduct}(A,B,C)}{the result is $\overrightarrow{AB}\cdot \overrightarrow{AC}$} +\end{tabular} + +\emph{The result is a number that can be retrieved with \tkzcname{tkzGetResult}.} +\end{NewMacroBox} + +\subsubsection{Simple example} % (fold) +\label{ssub:simple_example} + +\begin{tkzexample}[small,latex=7cm] +\begin{tikzpicture} + \tkzDefPoints{-2/-3/A,4/0/B,1/3/C} + \tkzDefPointBy[projection= onto A--B](C) + \tkzGetPoint{H} + \tkzDrawSegment(C,H) + \tkzMarkRightAngle(C,H,A) + \tkzDrawSegments[vector style](A,B A,C) + \tkzDrawPoints(A,H) \tkzLabelPoints(A,B,H) + \tkzLabelPoints[above](C) + \tkzDotProduct(A,B,C) \tkzGetResult{pabc} + \pgfmathparse{round(10*\pabc)/10} + \let\pabc\pgfmathresult + \node at (1,-3) {% + $\overrightarrow{PA}\cdot \overrightarrow{PB}=\pabc$}; + \tkzDotProduct(A,H,B) \tkzGetResult{phab} + \pgfmathparse{round(10*\phab)/10} + \let\phab\pgfmathresult + \node at (1,-4) {$PA \times PH = \phab $}; +\end{tikzpicture} +\end{tkzexample} +% subsubsection simple_example (end) + + +\subsubsection{Cocyclic points} % (fold) +\label{ssub:cocyclicpts} + +\begin{tkzexample}[small,latex=7cm] +\begin{tikzpicture}[scale=.75] + \tkzDefPoints{1/2/O,5/2/B,2/2/P,3/3/Q} + \tkzInterLC[common=B](O,B)(O,B) \tkzGetFirstPoint{A} + \tkzInterLC[common=B](P,Q)(O,B) \tkzGetPoints{C}{D} + \tkzDrawCircle(O,B) + \tkzDrawSegments(A,B C,D) + \tkzDrawPoints(A,B,C,D,P) + \tkzLabelPoints(P) + \tkzLabelPoints[below left](A,C) + \tkzLabelPoints[above right](B,D) + \tkzDotProduct(P,A,B) \tkzGetResult{pab} + \pgfmathparse{round(10*\pab)/10} + \let\pab\pgfmathresult + \tkzDotProduct(P,C,D) \tkzGetResult{pcd} + \pgfmathparse{round(10*\pcd)/10} + \let\pcd\pgfmathresult + \node at (1,-3) {% + $\overrightarrow{PA}\cdot \overrightarrow{PB} = + \overrightarrow{PC}\cdot \overrightarrow{PD}$}; + \node at (1,-4)% + {$\overrightarrow{PA}\cdot \overrightarrow{PB} =\pab$}; + \node at (1,-5){% + $\overrightarrow{PC}\cdot \overrightarrow{PD} =\pcd$}; +\end{tikzpicture} +\end{tkzexample} +% subsubsection cocyclicpts (end) + + +\subsection{Power of a point with respect to a circle} + +\begin{NewMacroBox}{tkzPowerCircle}{\parg{$pt1$}\parg{$pt2$,$pt3$}}% +\begin{tabular}{lll}% +arguments & example & explanation \\ +\midrule +\TAline{(pt1)(pt2,pt3)} {\tkzcname{tkzPowerCircle}(A)(O,M)}{power of $A$ with respect to the circle (O,A)} +\end{tabular} + +\emph{The result is a number that represents the power of a point with respect to a circle.} +\end{NewMacroBox} + +\subsubsection{Power from the radical axis} % (fold) +\label{ssub:power} + +In this example, the radical axis $(EF)$ has been drawn. A point $H$ has been chosen on $(EF)$ and the power of the point $H$ with respect to the circle of center $A$ has been calculated as well as $PS^2$. You can check that the power of $H$ with respect to the circle of center $C$ as well as $HS'^2, HT^2, HT'^2$ give the same result. + +\begin{tkzexample}[small,latex=7cm] +\begin{tikzpicture}[scale=.5] + \tkzDefPoints{-1/0/A,0/5/B,5/-1/C,7/1/D} + \tkzDrawCircles(A,B C,D) + \tkzDefRadicalAxis(A,B)(C,D) \tkzGetPoints{E}{F} + \tkzDrawLine[add=1 and 2](E,F) + \tkzDefPointOnLine[pos=1.5](E,F) \tkzGetPoint{H} + \tkzDefLine[tangent from = H](A,B)\tkzGetPoints{T}{T'} + \tkzDefLine[tangent from = H](C,D)\tkzGetPoints{S}{S'} + \tkzDrawSegments(H,T H,T' H,S H,S') + \tkzDrawPoints(A,B,C,D,E,F,H,T,T',S,S') + \tkzPowerCircle(H)(A,B) \tkzGetResult{pw} + \tkzDotProduct(H,S,S) \tkzGetResult{phtt} + \node {Power $\approx \pw \approx \phtt$}; +\end{tikzpicture} +\end{tkzexample} +% subsubsection power (end) + +\subsection{Radical axis} + +In geometry, the radical axis of two non-concentric circles is the set of points whose power with respect to the circles are equal. Here |\tkzDefRadicalAxis(A,B)(C,D)| gives the radical axis of the two circles $\mathcal{C}(A,B)$ and $\mathcal{C}(C,D)$. + +\begin{NewMacroBox}{tkzDefRadicalAxis}{\parg{$pt1$,$pt2$}\parg{$pt3$,$pt4$}}% +\begin{tabular}{lll}% +arguments & example & explanation \\ +\midrule +\TAline{(pt1,pt2)(pt3,pt4)} {\tkzcname{tkzDefRadicalAxis}(A,B)(C,D)}{Two circles with centers $A$ and $C$} +\midrule +\end{tabular} + + +\emph{The result is two points of the radical axis.} +\end{NewMacroBox} + +\subsubsection{Two circles disjointed} % (fold) +\label{ssub:two_circles_disjointed} + + +\begin{tkzexample}[small,latex=8cm] +\begin{tikzpicture}[scale=.75] + \tkzDefPoints{-1/0/A,0/2/B,4/-1/C,4/0/D} + \tkzDrawCircles(A,B C,D) + \tkzDefRadicalAxis(A,B)(C,D) + \tkzGetPoints{E}{F} + \tkzDrawLine[add=1 and 2](E,F) + \tkzDrawLine[add=.5 and .5](A,C) +\end{tikzpicture} +\end{tkzexample} +% subsubsection two_circles_disjointed (end) + +\subsubsection{Three circles} % (fold) +\label{ssub:threecircles} + + + +\begin{tkzexample}[small,latex=8cm] +\begin{tikzpicture}[scale=.4] + \tkzDefPoints{0/0/A,5/0/a,7/-1/B,3/-1/b,5/-4/C,2/-4/c} + \tkzDrawCircles(A,a B,b C,c) + \tkzDefRadicalAxis(A,a)(B,b) \tkzGetPoints{i}{j} + \tkzDefRadicalAxis(A,a)(C,c) \tkzGetPoints{k}{l} + \tkzDefRadicalAxis(C,c)(B,b) \tkzGetPoints{m}{n} + \tkzDrawLines[new](i,j k,l m,n) +\end{tikzpicture} +\end{tkzexample} +% subsubsection threecircles (end) + +\subsection{\tkzcname{tkzIsLinear}, \tkzcname{tkzIsOrtho}} + \begin{NewMacroBox}{tkzIsLinear}{\parg{$pt1$,$pt2$,$pt3$}}% + \begin{tabular}{lll}% + arguments & example & explanation \\ + \midrule + \TAline{(pt1,pt2,pt3)} {\tkzcname{tkzIsLinear}(A,B,C)}{$A,B,C$ aligned ?} + \midrule + \end{tabular} + + \emph{\tkzcname{tkzIsLinear} allows to test the alignment of the three points $pt1$,$pt2$,$pt3$. } + \end{NewMacroBox} + + \begin{NewMacroBox}{tkzIsOrtho}{\parg{$pt1$,$pt2$,$pt3$}}% + \begin{tabular}{lll}% + arguments & example & explanation \\ + \midrule + \TAline{(pt1,pt2,pt3)} {\tkzcname{tkzIsOrtho}(A,B,C)}{$(AB)\perp (AC)$ ? } + \midrule + \end{tabular} + + \emph{\tkzcname{tkzIsOrtho} allows to test the orthogonality of lines $(pt1pt2)$ and $(pt1pt3)$. } + \end{NewMacroBox} + + \subsubsection{Use of \tkzcname{tkzIsOrtho} and \tkzcname{tkzIsLinear}} + +\begin{tkzexample}[small,latex=7cm] + \begin{tikzpicture} + \tkzDefPoints{1/-2/A,5/0/B} + \tkzDefCircle[diameter](A,B) \tkzGetPoint{O} + \tkzDrawCircle(O,A) + \tkzDefPointBy[rotation= center O angle 60](B) + \tkzGetPoint{C} + \tkzDefPointBy[rotation= center O angle 60](A) + \tkzGetPoint{D} + \tkzDrawCircle(O,A) + \tkzDrawPoints(A,B,C,D,O) + \tkzIsOrtho(C,A,B) + \iftkzOrtho + \tkzDrawPolygon[blue](A,B,C) + \tkzDrawPoints[blue](A,B,C,D) + \else + \tkzDrawPoints[red](A,B,C,D) + \fi + \tkzIsLinear(O,C,D) + \iftkzLinear + \tkzDrawSegment[orange](C,D) + \fi +\end{tikzpicture} + +\end{tkzexample} + + \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-triangles.tex b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-triangles.tex index 7eb2875ec7..27d5304b6a 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-triangles.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-triangles.tex @@ -18,6 +18,7 @@ The following macros will allow you to define or construct a triangle from \tkzn \item \tkzname{cheops} determines a third point such that the triangle is isosceles with side measurements proportional to $2$, $\Phi$ and $\Phi$. \end{itemize} +\newpage \begin{NewMacroBox}{tkzDefTriangle}{\oarg{local options}\parg{A,B}}% The points are ordered because the triangle is constructed following the direct direction of the trigonometric circle. This macro is either used in partnership with \tkzcname{tkzGetPoint} or by using \tkzname{tkzPointResult} if it is not necessary to keep the name. @@ -34,16 +35,17 @@ options & default & definition \\ \TOline{pythagoras}{equilateral}{same as above} \TOline{egyptian}{equilateral}{same as above} \TOline{school} {equilateral}{angles of 30, 60 and 90 degrees } -\TOline{gold}{equilateral}{angles of 72, 72 and 36 degrees, $A$ is the apex} -\TOline{euclid} {equilateral}{same as above but $[AB]$ is the base} -\TOline{golden} {equilateral}{B rectangle and $AB/AC = \Phi$} +\TOline{gold}{equilateral}{B rectangle and $AB/AC = \Phi$} +\TOline{euclid} {equilateral}{angles of 72, 72 and 36 degrees, $A$ is the apex} +\TOline{golden} {equilateral}{angles of 72, 72 and 36 degrees, $C$ is the apex} +\TOline{sublime} {equilateral}{angles of 72, 72 and 36 degrees, $C$ is the apex} \TOline{cheops} {equilateral}{AC=BC, AC and BC are proportional to $2$ and $\Phi$.} \TOline{swap} {false}{gives the symmetric point with respect to $AB$} \bottomrule \end{tabular} \medskip -\tkzcname{tkzGetPoint} allows you to store the point otherwise \tkzname{tkzPointResult} allows for immediate use. +\emph{\tkzcname{tkzGetPoint} allows you to store the point otherwise \tkzname{tkzPointResult} allows for immediate use.} \end{NewMacroBox} \subsubsection{Option \tkzname{equilateral}} @@ -94,6 +96,8 @@ The angles are 30, 60 and 90 degrees. \tkzLabelAngle[pos=0.8](A,C,B){$60^\circ$} \tkzDrawSegments(A,B) \tkzDrawSegments[new](A,C B,C) + \tkzLabelPoints(A,B) + \tkzLabelPoints[above](C) \end{tikzpicture} \end{tkzexample} @@ -108,10 +112,10 @@ This triangle has sides whose lengths are proportional to 3, 4 and 5. \tkzDrawSegments(A,B) \tkzDrawSegments[new](A,C B,C) \tkzMarkRightAngles(A,B,C) - \tkzLabelPoint[above,new](C){$C$} \tkzDrawPoints[new](C) \tkzDrawPoints(A,B) - \tkzLabelPoints(A,B) + \tkzLabelPoints[above](A,B) + \tkzLabelPoints[new](C) \end{tikzpicture} \end{tkzexample} @@ -148,6 +152,23 @@ This triangle has sides whose lengths are proportional to 3, 4 and 5. \end{tikzpicture} \end{tkzexample} +\subsubsection{Option \tkzname{euclid}} +\tkzimp{Euclid} and \tkzimp{golden} are identical but the segment AB is a base in one and a side in the other. + +\begin{tkzexample}[latex=7 cm,small] +\begin{tikzpicture}[scale=.75] + \tkzDefPoint(0,0){A} \tkzDefPoint(4,0){B} + \tkzDefTriangle[euclid](A,B)\tkzGetPoint{C} + \tkzDrawPolygon(A,B,C) + \tkzDrawPoints(A,B,C) + \tkzLabelPoints(C) + \tkzLabelPoints[above](A,B) + \tkzLabelAngle[pos=0.8](A,B,C){$72^\circ$} + \tkzLabelAngle[pos=0.8](B,C,A){$72^\circ$} + \tkzLabelAngle[pos=0.8](C,A,B){$36^\circ$} +\end{tikzpicture} +\end{tkzexample} + \subsubsection{Option \tkzname{isosceles right}} \begin{tkzexample}[latex=7 cm,small] \begin{tikzpicture} @@ -158,7 +179,8 @@ This triangle has sides whose lengths are proportional to 3, 4 and 5. \tkzDrawPolygons(A,B,C) \tkzDrawPoints(A,B,C) \tkzMarkRightAngles(A,C,B) - \tkzLabelPoints(A,B,C) + \tkzLabelPoints(A,B) + \tkzLabelPoints[above](C) \end{tikzpicture} \end{tkzexample} @@ -170,31 +192,14 @@ This triangle has sides whose lengths are proportional to 3, 4 and 5. \tkzGetPoint{C} \tkzDrawPolygon(A,B,C) \tkzDrawPoints(A,B,C) - \tkzLabelPoints(B) \tkzLabelPoints[below](A,C) - \tkzLabelAngle[pos=0.8](C,A,B){$36^\circ$} - \tkzLabelAngle[pos=0.8](A,B,C){$72^\circ$} - \tkzLabelAngle[pos=0.8](B,C,A){$72^\circ$} -\end{tikzpicture} -\end{tkzexample} - - -\subsubsection{Option \tkzname{euclid}} -\tkzimp{Euclid} and \tkzimp{gold} are identical but the segment AB is a base in one and a side in the other. - -\begin{tkzexample}[latex=7 cm,small] -\begin{tikzpicture}[scale=.75] - \tkzDefPoint(0,0){A} \tkzDefPoint(4,0){B} - \tkzDefTriangle[euclid](A,B)\tkzGetPoint{C} - \tkzDrawPolygon(A,B,C) - \tkzDrawPoints(A,B,C) - \tkzLabelPoints(A,B) - \tkzLabelPoints[above](C) - \tkzLabelAngle[pos=0.8](B,A,C){$72^\circ$} - \tkzLabelAngle[pos=0.8](C,B,A){$72^\circ$} - \tkzLabelAngle[pos=0.8](A,C,B){$36^\circ$} + \tkzLabelPoints[above](A,B) + \tkzLabelPoints[below](C) + \tkzMarkRightAngle(A,B,C) + \tkzText(0,-2){$\dfrac{AC}{AB}=\varphi$} \end{tikzpicture} \end{tkzexample} +\clearpage \subsection{Specific triangles with \tkzcname{tkzDefSpcTriangle}} The centers of some triangles have been defined in the "points" section, here it is a question of determining the three vertices of specific triangles. @@ -202,7 +207,6 @@ The centers of some triangles have been defined in the "points" section, here it \begin{NewMacroBox}{tkzDefSpcTriangle}{\oarg{local options}\parg{p1,p2,p3}\marg{r1,r2,r3}} The order of the points is important! p1p2p3 defines a triangle then the result is a triangle whose vertices have as reference a combination with \tkzname{name} and r1,r2, r3. If \tkzname{name} is empty then the references are r1,r2 and r3. - \medskip \begin{tabular}{lll}% \toprule @@ -223,7 +227,6 @@ options & default & definition \\ \TOline{name} {empty}{used to name the vertices} \midrule \end{tabular} - \end{NewMacroBox} \subsubsection{How to name the vertices} @@ -243,20 +246,22 @@ The geometric centroid of the polygon vertices of a triangle is the point $G$ ( In the following example, we obtain the Euler circle which passes through the previously defined points. \begin{tkzexample}[latex=7cm,small] -\begin{tikzpicture}[rotate=90,scale=.75] - \tkzDefPoints{0/0/A,6/0/B,0.8/4/C} - \tkzDefTriangleCenter[centroid](A,B,C) - \tkzGetPoint{M} - \tkzDefSpcTriangle[medial,name=M](A,B,C){_A,_B,_C} - \tkzDrawPolygon(A,B,C) - \tkzDrawSegments[dashed,new](A,M_A B,M_B C,M_C) - \tkzDrawPolygon[new](M_A,M_B,M_C) - \tkzDrawPoints(A,B,C) - \tkzDrawPoints[new](M,M_A,M_B,M_C) - \tkzAutoLabelPoints[center=M,font=\scriptsize]% -(A,B,C,M_A,M_B,M_C) - \tkzLabelPoints[font=\scriptsize](M) -\end{tikzpicture} + \begin{tikzpicture}[rotate=90,scale=.75] + \tkzDefPoints{0/0/A,6/0/B,0.8/4/C} + \tkzDefTriangleCenter[centroid](A,B,C) + \tkzGetPoint{M} + \tkzDefSpcTriangle[medial,name=M](A,B,C){_A,_B,_C} + \tkzDrawPolygon(A,B,C) + \tkzDrawSegments[dashed,new](A,M_A B,M_B C,M_C) + \tkzDrawPolygon[new](M_A,M_B,M_C) + \tkzDrawPoints(A,B,C) + \tkzDrawPoints[new](M,M_A,M_B,M_C) + \tkzLabelPoints[above](B) + \tkzLabelPoints[below](A,C,M_B) + \tkzLabelPoints[right](M_C) + \tkzLabelPoints[left](M_A) + \tkzLabelPoints[font=\scriptsize](M) + \end{tikzpicture} \end{tkzexample} \subsubsection{Option \tkzname{in} or \tkzname{incentral} } @@ -270,18 +275,17 @@ respective opposite sides. \begin{tkzexample}[latex=7cm,small] \begin{tikzpicture}[scale=1] - \tkzDefPoints{ 0/0/A,5/0/B,1/3/C} + \tkzDefPoints{ 0/0/A,5/0/B,2/3/C} \tkzDefSpcTriangle[in,name=I](A,B,C){_a,_b,_c} - \tkzInCenter(A,B,C)\tkzGetPoint{I} + \tkzDefCircle[in](A,B,C) \tkzGetPoints{I}{a} + \tkzDrawCircle(I,a) \tkzDrawPolygon(A,B,C) \tkzDrawPolygon[new](I_a,I_b,I_c) - \tkzDrawPoints(A,B,C,I,I_a,I_b,I_c) - \tkzDrawCircle[in](A,B,C) \tkzDrawSegments[dashed,new](A,I_a B,I_b C,I_c) - \tkzAutoLabelPoints[center=I,% - new,font=\scriptsize](I_a,I_b,I_c) - \tkzAutoLabelPoints[center=I, - font=\scriptsize](A,B,C) + \tkzDrawPoints(A,B,C,I,I_a,I_b,I_c) + \tkzLabelPoints[below](A,B,I_c) + \tkzLabelPoints[above left](I_b) + \tkzLabelPoints[above right](C,I_a) \end{tikzpicture} \end{tkzexample} @@ -317,15 +321,16 @@ We obtain the intersections of the bisectors with the sides. \tkzDefPoints{0/0/A,6/0/B,0.8/4/C} \tkzDefSpcTriangle[intouch,name=X](A,B,C){_a,_b,_c} \tkzInCenter(A,B,C)\tkzGetPoint{I} + \tkzDefCircle[in](A,B,C) \tkzGetPoints{I}{i} + \tkzDrawCircle(I,i) \tkzDrawPolygon(A,B,C) \tkzDrawPolygon[new](X_a,X_b,X_c) \tkzDrawPoints(A,B,C) \tkzDrawPoints[new](X_a,X_b,X_c) - \tkzDrawCircle[in](A,B,C) - \tkzAutoLabelPoints[center=I,blue,font=\scriptsize]% -(X_a,X_b,X_c) - \tkzAutoLabelPoints[center=I,red,font=\scriptsize]% -(A,B,C) + \tkzLabelPoints[right](X_a) + \tkzLabelPoints[left](X_b) + \tkzLabelPoints[above](C) + \tkzLabelPoints[below](A,B,X_c) \end{tikzpicture} \end{tkzexample} @@ -355,10 +360,13 @@ We obtain the points of contact of the exinscribed circles as well as the triang \tkzDrawPolygon(A,B,C) \tkzDrawPolygon[new](T_a,T_b,T_c) \tkzDrawPoints(A,B,C,N_a) -\tkzLabelPoints(N_a) -\tkzAutoLabelPoints[center=N_a](A,B,C) -\tkzAutoLabelPoints[center=G,new, - dist=.4](T_a,T_b,T_c) +\tkzDrawPoints[new](T_a,T_b,T_c) +\tkzLabelPoints[below left](A) +\tkzLabelPoints[below](N_a,B) +\tkzLabelPoints[above](C) +\tkzLabelPoints[new,below left](T_b) +\tkzLabelPoints[new,below right](T_c) +\tkzLabelPoints[new,right=6pt](T_a) \tkzMarkRightAngles[fill=gray!15](J_a,T_a,B J_b,T_b,C J_c,T_c,A) \end{tikzpicture} @@ -384,7 +392,6 @@ Given a triangle $ABC$, the triangle $H_AH_BH_C$ whose vertices are endpoints of \tkzDrawPoints[new](H_A,H_B,H_C) \tkzDrawPolygon[new,fill=orange!20, opacity=.3](H_A,H_B,H_C) - \tkzDrawPoint(a) \tkzLabelPoints(C) \tkzLabelPoints[left](B) \tkzLabelPoints[above](A) @@ -401,7 +408,7 @@ The Feuerbach triangle is the triangle formed by the three points of tangency of The points of tangency define the Feuerbach triangle. \begin{tkzexample}[latex=8cm,small] -\begin{tikzpicture}[scale=1.25] +\begin{tikzpicture}[scale=1] \tkzDefPoint(0,0){A} \tkzDefPoint(3,0){B} \tkzDefPoint(0.5,2.5){C} @@ -412,16 +419,18 @@ The Feuerbach triangle is the triangle formed by the three points of tangency of name=J](A,B,C){_a,_b,_c} \tkzDefSpcTriangle[extouch, name=T](A,B,C){_a,_b,_c} - \tkzDrawPoints[blue](J_a,J_b,J_c,% - F_a,F_b,F_c,A,B,C) + \tkzLabelPoints[below left](J_a,J_b,J_c) \tkzClipBB \tkzShowBB \tkzDrawCircle[purple](N,F_a) \tkzDrawPolygon(A,B,C) \tkzDrawPolygon[new](F_a,F_b,F_c) \tkzDrawCircles[gray](J_a,F_a J_b,F_b J_c,F_c) - \tkzAutoLabelPoints[center=N,dist=.3, - font=\scriptsize](A,B,C,F_a,F_b,% - F_c,J_a,J_b,J_c) + \tkzDrawPoints[blue](J_a,J_b,J_c,% + F_a,F_b,F_c,A,B,C) + \tkzLabelPoints(A,B,F_c) + \tkzLabelPoints[above](C) + \tkzLabelPoints[right](F_a) + \tkzLabelPoints[left](F_b) \end{tikzpicture} \end{tkzexample} @@ -442,8 +451,11 @@ The tangential triangle is the triangle $T_aT_bT_c$ formed by the lines tangent \tkzDefCircle[circum](A,B,C) \tkzGetPoint{O} \tkzDrawCircle(O,A) - \tkzLabelPoints(A,B,C) - \tkzLabelPoints[new](T_a,T_b,T_c) + \tkzLabelPoints(A) + \tkzLabelPoints[above](B) + \tkzLabelPoints[left](C) + \tkzLabelPoints[new](T_b,T_c) + \tkzLabelPoints[new,left](T_a) \end{tikzpicture} \end{tkzexample} @@ -487,27 +499,27 @@ The Euler triangle of a triangle $ABC$ is the triangle $E_AE_BE_C$ whose vertice \tkzDefPoints{0/0/A,6/0/B,0.8/4/C} \tkzDefSpcTriangle[euler,name=E](A,B,C){a,b,c} \tkzDefSpcTriangle[orthic,name=H](A,B,C){a,b,c} - \tkzDefExCircle(A,B,C) \tkzGetPoint{I} \tkzGetLength{rI} - \tkzDefExCircle(C,A,B) \tkzGetPoint{J} \tkzGetLength{rJ} - \tkzDefExCircle(B,C,A) \tkzGetPoint{K} \tkzGetLength{rK} + \tkzDefExCircle(A,B,C) \tkzGetPoints{I}{i} + \tkzDefExCircle(C,A,B) \tkzGetPoints{J}{j} + \tkzDefExCircle(B,C,A) \tkzGetPoints{K}{k} \tkzDrawPoints[orange](I,J,K) \tkzLabelPoints[font=\scriptsize](A,B,C,I,J,K) \tkzClipBB - \tkzInterLC[R](I,C)(I,\rI) \tkzGetSecondPoint{Fc} - \tkzInterLC[R](J,B)(J,\rJ) \tkzGetSecondPoint{Fb} - \tkzInterLC[R](K,A)(K,\rK) \tkzGetSecondPoint{Fa} + \tkzInterLC(I,C)(I,i) \tkzGetSecondPoint{Fc} + \tkzInterLC(J,B)(J,j) \tkzGetSecondPoint{Fb} + \tkzInterLC(K,A)(K,k) \tkzGetSecondPoint{Fa} \tkzDrawLines[add=1.5 and 1.5](A,B A,C B,C) - \tkzDrawCircle[euler,orange](A,B,C) \tkzGetPoint{E} + \tkzDefCircle[euler](A,B,C) \tkzGetPoints{E}{e} + \tkzDrawCircle[orange](E,e) \tkzDrawSegments[orange](E,I E,J E,K) \tkzDrawSegments[dashed](A,Ha B,Hb C,Hc) - \tkzDrawCircles[R](J,{\rJ} I,{\rI} K,{\rK}) + \tkzDrawCircles(J,j I,i K,k) \tkzDrawPoints(A,B,C) \tkzDrawPoints[orange](E,I,J,K,Ha,Hb,Hc,Ea,Eb,Ec,Fa,Fb,Fc) \tkzLabelPoints[font=\scriptsize](E,Ea,Eb,Ec,Ha,Hb,Hc,Fa,Fb,Fc) \end{tikzpicture} \end{tkzexample} - \subsubsection{Option \tkzname{symmedial}} The symmedial triangle$ K_AK_BK_C$ is the triangle whose vertices are the intersection points of the symmedians with the reference triangle $ABC$. @@ -521,7 +533,10 @@ The symmedial triangle$ K_AK_BK_C$ is the triangle whose vertices are the inters \tkzDrawPolygon(A,B,C) \tkzDrawSegments[new](A,K_A B,K_B C,K_C) \tkzDrawPoints(A,B,C,K,K_A,K_B,K_C) -\tkzLabelPoints[font=\scriptsize](A,B,C,K,K_A,K_B,K_C) +\tkzLabelPoints(A,B,K,K_C) +\tkzLabelPoints[above](C) +\tkzLabelPoints[right](K_A) +\tkzLabelPoints[left](K_B) \end{tikzpicture} \end{tkzexample} @@ -535,23 +550,12 @@ arguments & example & explanation \\ \midrule \end{tabular} +\medskip \emph{The triangle is unchanged.} \end{NewMacroBox} \subsubsection{Modification of the \tkzname{school} triangle} -This triangle is constructed from the segment $[AB]$ on $[A,x)$ -\begin{tkzexample}[latex=7cm,small] -\begin{tikzpicture} - \tkzDefPoints{0/0/A,4/0/B,6/0/x} - \tkzDefTriangle[school](A,B) - \tkzGetPoint{C} - \tkzDrawSegments(A,B B,x) - \tkzDrawSegments(A,C B,C) - \tkzDrawPoints(A,B,C) - \tkzLabelPoints(A,B,C,x) - \tkzMarkRightAngles(C,B,A) -\end{tikzpicture} -\end{tkzexample} +This triangle is constructed from the segment $[AB]$ on $[A,x)$. If we want the segment $[AC]$ to be on $[A,x)$, we just have to swap $B$ and $C$. diff --git a/macros/latex/contrib/tkz/tkz-euclide/doc/tkz-euclide.pdf b/macros/latex/contrib/tkz/tkz-euclide/doc/tkz-euclide.pdf Binary files differindex 276253b32c..8d26d14cea 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/doc/tkz-euclide.pdf +++ b/macros/latex/contrib/tkz/tkz-euclide/doc/tkz-euclide.pdf diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-euclide.cfg b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-euclide.cfg index 7516b752a3..97a5b3c4e6 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-euclide.cfg +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-euclide.cfg @@ -16,9 +16,9 @@ % and save the file in a directory part of your TEXINPUTS environment % variable. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-euclide.cfg} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-euclide.cfg} %<------ colors ---------------------------------------–> \def\tkz@backgroundcolor{white} \def\tkz@textcolor{black} @@ -26,35 +26,75 @@ \def\tkz@fillcolor{\tkz@backgroundcolor} \def\tkz@mainlinecolor{\tkz@textcolor} \def\tkz@otherlinecolor{\tkz@mainlinecolor!50} -%<------------------------- Cartesian system -----------------------------–> -% Default unity cm -% Geometry Euclidean with unity for x and y = 1cm ---> step = 1 -% 0 ≤ x ≤ 10 -% 0 ≤ y ≤ 10 -\def\tkz@init@xorigine{0} -\def\tkz@init@yorigine{0} -\def\tkz@init@xstep{1} -\def\tkz@init@ystep{1} -\def\tkz@init@xmin{0} -\def\tkz@init@ymin{0} -\def\tkz@init@xmax{10} -\def\tkz@init@ymax{10} -\def\tkz@init@xdec{1} -\def\tkz@init@ydec{1} %<-------------------------- points -----------------------------------–> \def\tkz@euc@pointshape{circle} \def\tkz@euc@pointcolor{\tkz@mainlinecolor} \def\tkz@euc@labelcolor{\tkz@mainlinecolor} -\def\tkz@euc@pointsize{3} +\def\tkz@euc@pointsize{2} \def\tkz@euc@pointpos{below right} \def\tkz@euc@segmentcolor{\tkz@mainlinecolor} \def\tkz@euc@circlecolor{\tkz@mainlinecolor} +\tikzset{point style/.style = {draw = \tkz@euc@pointcolor, + inner sep = 0pt, + shape = \tkz@euc@pointshape, + minimum size = \tkz@euc@pointsize, + fill = \tkz@euc@pointcolor + } + } +% label for the point +\tikzset{label style/.style={ below, \tkz@euc@labelcolor, + font = \normalsize} + } +\tikzset{label angle style/.style={ \tkz@euc@labelcolor, + font = \normalsize} + } %<-------------------------- line ---------------------------------------–> \def\tkz@euc@linecolor{\tkz@mainlinecolor} -\def\tkz@euc@linewidth{0.6pt} +\def\tkz@euc@linewidth{0.2pt} \def\tkz@euc@linestyle{solid} \def\tkz@euc@lineleft{.2} \def\tkz@euc@lineright{.2} +\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}, + line cap = round + } +} +%<------------------------- circle -----------------------------------–> +\def\tkz@euc@circlelw{\tkz@euc@linewidth} +\def\tkz@euc@circlecolor{\tkz@otherlinecolor} +\def\tkz@euc@circlestyle{solid} +\tikzset{% +circle style/.style = {% + color = \tkz@euc@circlecolor, + line width = \tkz@euc@circlelw, + style = \tkz@euc@circlestyle} +} +\tikzset{label circle style/.style = {% + color = \tkz@mainlinecolor} +} +%<------------------------- compass -----------------------------------–> +\def\tkz@euc@compasscolor{\tkz@otherlinecolor} +\def\tkz@euc@compasswidth{\tkz@euc@linewidth} +\def\tkz@euc@compassstyle{solid} +\tikzset{% +compass style/.style = {% + color = \tkz@euc@compasscolor, + line width = \tkz@euc@compasswidth, + style = \tkz@euc@compassstyle} +} +%<------------------------- arc -----------------------------------–> +\def\tkz@euc@arclw{\tkz@euc@linewidth} +\def\tkz@euc@arccolor{\tkz@mainlinecolor} +\def\tkz@euc@arcstyle{solid} +\tikzset{% +arc style/.style={% + color = \tkz@euc@arccolor, + line width = \tkz@euc@linewidth} +} %<------ axes cartesian system ---------------------------------------–> \def\tkz@init@color{\tkz@textcolor} \def\tkz@init@lw{0.4 pt} @@ -86,14 +126,7 @@ \def\tkz@init@gradsize{\textstyle} \def\tkzRatioLineGrid{0.75} \def\tkz@gd@sublw{0.4 pt}% size line sub grid -%<------------------------- compass -----------------------------------–> -\def\tkz@euc@compasscolor{\tkz@otherlinecolor} -\def\tkz@euc@compasswidth{0.4pt} -\def\tkz@euc@compassstyle{solid} -%<------------------------- arc -----------------------------------–> -\def\tkz@arc@lw{0.4pt} -\def\tkz@arc@color{\tkz@mainlinecolor} -\def\tkz@arc@style{solid} + %<---------------------------- mark -----------------------------------–> \def\tkz@mk@color{\tkz@mainlinecolor} \def\tkz@mk@mark{*} @@ -114,41 +147,11 @@ } \tikzset{yaxe style/.style = {> = latex, ->} } - -\tikzset{point style/.style = {draw = \tkz@euc@pointcolor, - inner sep = 0pt, - shape = \tkz@euc@pointshape, - minimum size = \tkz@euc@pointsize, - fill = \tkz@euc@pointcolor - } - } -% label for the point -\tikzset{label style/.style={ \tkz@euc@pointpos, - \tkz@euc@labelcolor, - font = \normalsize} - } -\tikzset{label angle style/.style={ \tkz@euc@labelcolor, - font = \normalsize} - } -\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}, - line cap = round - } - } -\tikzset{label seg style/.style = {color = \tkz@mainlinecolor, - auto - } - } \tikzset{rep style/.style = { ->, >=latex} } -\tikzset{compass style/.style = {color = \tkz@euc@compasscolor, - line width = \tkz@euc@compasswidth, - style = \tkz@euc@compassstyle} - } + \tikzset{mark style/.style = {mark = \tkz@mk@mark, mark size = \tkz@mk@size, mark options = {color= \tkz@mk@color, @@ -156,7 +159,22 @@ } } } -\tikzset{arc style/.style={gray,thin}} + +%<------------------------- Cartesian system -----------------------------–> +% Default unity cm +% Geometry Euclidean with unity for x and y = 1cm ---> step = 1 +% 0 ≤ x ≤ 10 +% 0 ≤ y ≤ 10 +\def\tkz@init@xorigine{0} +\def\tkz@init@yorigine{0} +\def\tkz@init@xstep{1} +\def\tkz@init@ystep{1} +\def\tkz@init@xmin{0} +\def\tkz@init@ymin{0} +\def\tkz@init@xmax{10} +\def\tkz@init@ymax{10} +\def\tkz@init@xdec{1} +\def\tkz@init@ydec{1} %<---------------------- show coord -----------------------------------–> \tikzset{arrow coord style/.style = {dashed, \tkz@euc@linecolor, @@ -180,6 +198,7 @@ left = 3pt} } % +\tikzset{help lines/.style=teal!30,ultra thin} %<--------------------------- arrow --------------------------------------–> % Syntax: % @@ -264,6 +283,7 @@ tkz arrow/.default=Latex, --(current bounding box.north east) -- (current bounding box.south east) -- cycle} }} + \def\tkzPhi{1.618034} \def\tkzInvPhi{0.618034} \def\tkzSqrtPhi{1.27202} @@ -273,4 +293,5 @@ tkz arrow/.default=Latex, \def\tkzSqrTwobyTwo{0.7071065} \def\tkzPi{3.1415926} \def\tkzEuler{2.71828182} + \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-euclide.sty b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-euclide.sty index 6671d81a0e..2708f4e730 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-euclide.sty +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-euclide.sty @@ -1,21 +1,20 @@ -% tkz-euclide.sty +% tkz-euclide.sty % Copyright 2022 Alain Matthes % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions of LaTeX version 2005/12/01 or later. +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. - -%<------------------------------------------------------------> -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-euclide.sty} +%------------------------------------------------------------------------------- +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-euclide.sty} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{tkz-euclide}[ 2022/02/25 4.051b for pure Euclidean Geometry ] - +\ProvidesPackage{tkz-euclide}[ 2022/07/14 4.2c for pure Euclidean Geometry ] \@ifpackageloaded{tkz-base}{ \newdimen\tkzRadius \newdimen\tkzLength @@ -24,6 +23,7 @@ \newif\ifnormtkzcode@execute% german ? right angle %---------------------- semi circle \newif\iftkz@swap@sc +\newif\iftkz@line@normed %--------------------- circles \newif\iftkzClipOutCircle %--------------------- polygons @@ -34,11 +34,16 @@ %--------------------- intersections \newif\iftkzFlagLC\tkzFlagLCfalse \newif\iftkzFlagCC\tkzFlagCCfalse +\newif\iftkz@near\tkz@nearfalse +%--------------------- +\newif\iftkzLinear\tkzLinearfalse +\newif\iftkzOrtho\tkzOrthofalse }{ \RequirePackage{tikz} \usetikzlibrary{angles, arrows, arrows.meta, + backgrounds, calc, decorations, decorations.markings, @@ -47,16 +52,25 @@ decorations.text, decorations.pathmorphing, intersections, + math, plotmarks, + positioning, quotes, - shapes.misc + shapes.misc, + through } \RequirePackage{xfp} -%--------------------- +\usepackage{xpatch} +\xpatchcmd\pgfmathreciprocal@@ {\pgfmath@y.1\pgfmath@y\pgfmath@y.1\pgfmath@y\pgfmath@y.1\pgfmath@y\pgfmath@y.1\pgfmath@y} + {\pgfmath@y\dimexpr\pgfmath@y/10000\relax} + {}{\PatchFailed} + +%------------------------------------------------------------------------------- \newdimen\tkzRadius \newdimen\tkzLength \newdimen\tkz@radi -%--------------------- tkz registres +%------------------------------------------------------------------------------- +% tkz registres \newdimen\tkz@ax \newdimen\tkz@ay \newdimen\tkz@bx @@ -85,6 +99,10 @@ %--------------------- intersections \newif\iftkzFlagLC\tkzFlagLCfalse \newif\iftkzFlagCC\tkzFlagCCfalse +\newif\iftkz@near\tkz@nearfalse +%--------------------- utilities +\newif\iftkzLinear\tkzLinearfalse +\newif\iftkzOrtho\tkzOrthofalse %--------------------- tkz axis \newif\iftkz@X@noticks \newif\iftkz@Y@noticks @@ -113,7 +131,8 @@ \newcount\tkz@cntmk \newif\iftkz@RappReturn % protractor \newif\iftkz@RappFull -%--------------------- Init +%------------------------------------------------------------------------------- +% Init \def\tkz@xa{0} \def\tkz@xb{10} \def\tkz@ya{0} @@ -123,13 +142,12 @@ \typeout{Local configuration file tkz-euclide.cfg found and used}}{% \typeout{tkz-euclide.cfg not found}} } -%--------------------- Init +%------------------------------------------------------------------------------- \def\tkz@tmp@xa{-5} \def\tkz@tmp@xb{+5} \def\tkz@tmp@ya{-5} \def\tkz@tmp@yb{+5} -%<----------------------------------------------------------> - +%------------------------------------------------------------------------------- \DeclareOption*{} \ProcessOptions %<----------------------------------------------------------> @@ -147,11 +165,12 @@ \input{tkz-obj-eu-axesmin.tex} \input{tkz-tools-eu-colors.tex} \input{tkz-obj-eu-points.tex} +\input{tkz-obj-eu-draw-points.tex} } % next from euclide -\input{tkz-tools-eu-math.tex} -\input{tkz-tools-eu-intersections} \input{tkz-tools-eu-angles} +\input{tkz-tools-eu-intersections} +\input{tkz-tools-eu-math.tex} \input{tkz-obj-eu-compass.tex} \input{tkz-obj-eu-circles.tex} \input{tkz-obj-eu-circles-by.tex} @@ -170,4 +189,5 @@ \input{tkz-obj-eu-sectors.tex} \input{tkz-obj-eu-show.tex} \input{tkz-obj-eu-triangles} -\endinput + +\endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-lib-eu-marks.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-lib-eu-marks.tex index cc4cc0bd09..e6192198cf 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-lib-eu-marks.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-lib-eu-marks.tex @@ -10,16 +10,16 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-lib-eu-marks.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-lib-eu-marks.tex} \makeatletter %<--------------------------------------------------------------------------–> % Création des symboles %<--------------------------------------------------------------------------–> \def\tkz@undefined{none} % double bar -\pgfdeclareplotmark{||} +\pgfdeclareplotmark{ } {% \pgfpathmoveto{\pgfqpoint{2\pgflinewidth}{\pgfplotmarksize}} \pgfpathlineto{\pgfqpoint{2\pgflinewidth}{-\pgfplotmarksize}} @@ -28,7 +28,7 @@ \pgfusepathqstroke } %triple bar -\pgfdeclareplotmark{|||} +\pgfdeclareplotmark{ } {% \pgfpathmoveto{\pgfqpoint{0 pt}{\pgfplotmarksize}} \pgfpathlineto{\pgfqpoint{0 pt}{-\pgfplotmarksize}} @@ -40,7 +40,7 @@ } % An bar slant -\pgfdeclareplotmark{s|} +\pgfdeclareplotmark{s } {% \pgfpathmoveto{\pgfqpoint{-.70710678\pgfplotmarksize}% {-.70710678\pgfplotmarksize}} @@ -51,7 +51,7 @@ % An double bar slant -\pgfdeclareplotmark{s||} +\pgfdeclareplotmark{s } {% \pgfpathmoveto{\pgfqpoint{-0.75\pgfplotmarksize}{-\pgfplotmarksize}} \pgfpathlineto{\pgfqpoint{0.25\pgfplotmarksize}{\pgfplotmarksize}} @@ -59,7 +59,7 @@ \pgfpathlineto{\pgfqpoint{1\pgfplotmarksize}{\pgfplotmarksize}} \pgfusepathqstroke } -\pgfdeclareplotmark{s|||} +\pgfdeclareplotmark{s } {% \pgfpathmoveto{\pgfqpoint{-0.75\pgfplotmarksize}{-\pgfplotmarksize}} \pgfpathlineto{\pgfqpoint{0.25\pgfplotmarksize}{\pgfplotmarksize}} diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-lib-eu-shape.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-lib-eu-shape.tex index 98fbfce241..f0e53e2482 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-lib-eu-shape.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-lib-eu-shape.tex @@ -1,4 +1,4 @@ -% tkz-lib-eu-shape.tex + % tkz-lib-eu-shape.tex % Copyright 2022 Alain Matthes % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-lib-eu-shape.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-lib-eu-shape.tex} \makeatletter %<--------------------------------------------------------------------------–> % Création des symboles diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-axesmin.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-axesmin.tex index 5ee8ab60a2..883928a5a8 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-axesmin.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-axesmin.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-axesmin} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-axesmin} \makeatletter \def\removedot#1.{#1} @@ -107,7 +107,8 @@ \edef\tkz@posnext{\fpeval{\tkz@posnext/\tkz@init@xstep+\tkz@posmin}} \foreach \pos in {\tkz@posmin,...,\tkz@posmax}{% \edef\tkz@pos{\fpeval{\pos*1}}% ??? - \draw[ color = \tkz@X@color, line width = \tkz@X@tickwd, + \draw[ color = \tkz@X@color, + line width = \tkz@X@tickwd, shift = {(\tkz@pos,0)}]% (0pt,\tkz@X@tickup)--(0pt,-\tkz@X@tickdn); } diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-circles-by.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-circles-by.tex index a3bcf65ec3..d0caf96a37 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-circles-by.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-circles-by.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-circles.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-circles.tex} \makeatletter %<--------------------------------------------------------------------------–> % tkzCircle center and one point @@ -37,15 +37,10 @@ rotation/.code args = {center #1 angle #2}{ \def\tkz@numcby{4} \def\tkzcenter{#1} \def\tkzangle{#2}}, - orthogonal from/.code args = {#1}{ \def\tkz@numcby{5} - \def\tkz@ptfrom{#1}}, - orthogonal through/.code args = {#1 and #2}{ \def\tkz@numcby{6} - \def\tkz@ptone{#1} - \def\tkz@pttwo{#2}}, - inversion/.code args={center #1 through #2}{ \def\tkz@numcby{7} + inversion/.code args={center #1 through #2}{ \def\tkz@numcby{5} \def\tkzcenter{#1} \def\tkzpoint{#2}}, - inversion negative/.code args = {center #1 through #2}{\def\tkz@numcby{8} + inversion negative/.code args = {center #1 through #2}{\def\tkz@numcby{6} \def\tkzcenter{#1} \def\tkzpoint{#2}} } @@ -64,14 +59,10 @@ \or% 4 \tkzDefCircleRotation(#2) \or% 5 - \tkzDefOrthogonalCircle(#2,\tkz@ptfrom) - \or% 6 - \tkzDefOrthoThroughCircle(#2,\tkz@ptone,\tkz@pttwo) - \or% 7 \tkzDefInversionCircle(#2,\tkzcenter,\tkzpoint) - \or% 8 - \tkzDefInversionNegativeCircle(#2,\tkzcenter,\tkzpoint) - \fi + \or% 6 + \tkzDefInversionNegativeCircle(#2,\tkzcenter,\tkzpoint) +\fi \endgroup } %<--------------------------------------------------------------------------–> @@ -120,24 +111,43 @@ \endgroup } %<--------------------------------------------------------------------------–> +% #3,#4 cercle d'inversion centre #3. through #4 +% Si le cercle passe par le pôle l'image est une droite \def\tkzDefInversionCircle(#1,#2,#3,#4){% \begingroup - \tkzInterLC(#3,#1)(#1,#2) \tkzGetPoints{tkz@p1}{tkz@p2} - \tkzUInversePoint(#3,#4)(tkz@p1) + \tkz@@CalcLengthcm(#1,#2){tkz@lna}% + \tkz@@CalcLengthcm(#1,#3){tkz@lnb}% + \gdef\tkzMathResult{\fpeval{round(abs(\tkz@lnb - \tkz@lna),6)}} + \ifdim\tkzMathResult pt < 1 pt\relax% + \tkzURotateAngle(#1,-90)(#2) + \pgfnodealias{tkz@a}{tkzPointResult} + + \tkzUInversePoint(#3,#4)(tkz@a) \pgfnodealias{tkzFirstPointResult}{tkzPointResult} - \tkzUInversePoint(#3,#4)(tkz@p2) + \tkzUInversePoint(#3,#4)(#2) \pgfnodealias{tkzSecondPointResult}{tkzPointResult} + \else + \tkzURotateAngle(#1,90)(#2) + \pgfnodealias{tkz@a}{tkzPointResult} + \tkzURotateAngle(#1,-90)(#2) + \pgfnodealias{tkz@b}{tkzPointResult} + \tkzUInversePoint(#3,#4)(tkz@a) + \pgfnodealias{tkz@p1}{tkzPointResult} + \tkzUInversePoint(#3,#4)(tkz@b) + \pgfnodealias{tkz@p2}{tkzPointResult} + \tkzUInversePoint(#3,#4)(#2) + \pgfnodealias{tkz@p3}{tkzPointResult} + \tkzDefCircle[circum](tkz@p3,tkz@p1,tkz@p2) + \fi \endgroup } %<--------------------------------------------------------------------------–> \def\tkzDefInversionNegativeCircle(#1,#2,#3,#4){% \begingroup - \tkzInterLC(#3,#1)(#1,#2) \tkzGetPoints{tkz@p1}{tkz@p2} - \tkzUInversePoint(\tkzcenter,\tkzpoint)(tkz@p1) - \tkzUCSym(\tkzcenter)(tkzPointResult) + \tkzDefInversionCircle(#1,#2,#3,#4) + \tkzUCSym(\tkzcenter)(tkzFirstPointResult) \pgfnodealias{tkzFirstPointResult}{tkzPointResult} - \tkzUInversePoint(\tkzcenter,\tkzpoint)(tkz@p2) - \tkzUCSym(\tkzcenter)(tkzPointResult) + \tkzUCSym(\tkzcenter)(tkzSecondPointResult) \pgfnodealias{tkzSecondPointResult}{tkzPointResult} \endgroup } diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-circles.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-circles.tex index 8eb9ce62cf..3b309afa48 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-circles.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-circles.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-circles.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-circles.tex} \makeatletter %<--------------------------------------------------------------------------–> % tkzCircle center and one point @@ -23,31 +23,30 @@ % through instead of radius \def\tkz@numc{0} \pgfkeys{/tkzcircle/.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}, - 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}, - K = 1, - through + R/.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}, + euler/.code = \def\tkz@numc{5}, + nine/.code = \def\tkz@numc{5}, + apollonius/.code = \def\tkz@numc{6}, + spieker/.code = \def\tkz@numc{7}, + orthogonal from/.code args = {#1}{\gdef\tkz@numc{8} + \def\tkz@ptfrom{#1}}, + orthogonal through/.code args = {#1 and #2}{\gdef\tkz@numc{9} + \def\tkz@ptone{#1} + \def\tkz@pttwo{#2}}, + K/.code = \def\tkz@koeff{#1}, + K = 1, + circum } \def\tkzDefCircle{\pgfutil@ifnextchar[{\tkz@DefCircle}{\tkz@DefCircle[]}} \def\tkz@DefCircle[#1](#2){% \begingroup \pgfqkeys{/tkzcircle}{#1} \ifcase\tkz@numc% - \tkzDefCircleThrough(#2)% + \tkzDefCircleR(#2) \or% 1 \tkzDefCircleD(#2) \or% 2 @@ -61,21 +60,24 @@ \or% 6 \tkzDefApolloniusCircle(#2) \or% 7 - \tkzDefOrthogonalCircle(#2,\tkz@ptfrom) - \or% 8 - \tkzDefOrthoThroughCircle(#2,\tkz@ptone,\tkz@pttwo) - \or% 9 \tkzDefSpiekerCircle(#2) + \or% 8 + \tkzDefOrthogonalCircle(#2,\tkz@ptfrom) + \or% 9 + \tkzDefOrthoThroughCircle(#2,\tkz@ptone,\tkz@pttwo) \fi \endgroup } %for compatibility %<--------------------------------------------------------------------------–> +% R +%<--------------------------------------------------------------------------–> \def\tkzDefCircleR(#1,#2){% \begingroup \edef\tkzLengthResult{\fpeval{round(#2,5)}} \global\let\tkzLengthResult\tkzLengthResult - \tkzRenamePoint(#1){tkzPointResult} + \path (#1)--++(\tkzLengthResult,0) coordinate (tkzSecondPointResult); + \tkzRenamePoint(tkzSecondPointResult){tkzPointResult} \endgroup } %<--------------------------------------------------------------------------–> @@ -83,16 +85,20 @@ %<--------------------------------------------------------------------------–> \def\tkzDefCircleThrough(#1,#2){% \begingroup - \tkz@@CalcLengthcm(#1,#2){tkzLengthResult} - \tkzRenamePoint(#1){tkzPointResult} + \tkz@@CalcLengthcm(#1,#2){tkzLengthResult} + \node [draw,circle through=(#2)] at (#1) {}; + \tkzRenamePoint(#1){tkzPointResult} \endgroup } + %<--------------------------------------------------------------------------–> % Diameter Circle %<--------------------------------------------------------------------------–> \def\tkzDefCircleD(#1,#2){% \begingroup \tkzDefMidPoint(#1,#2) + \pgfnodealias{tkzFirstPointResult}{tkzPointResult} + \pgfnodealias{tkzSecondPointResult}{#2} \tkz@@CalcLengthcm(#1,tkzPointResult){tkzLengthResult} \endgroup } @@ -101,8 +107,10 @@ %<--------------------------------------------------------------------------–> \def\tkzDefCircumCircle(#1,#2,#3){% \begingroup - \tkzCircumCenter(#1,#2,#3) - \tkz@@CalcLengthcm(#1,tkzPointResult){tkzLengthResult}%3.06 add [cm] + \tkzCircumCenter(#1,#2,#3) + \tkzRenamePoint(tkzPointResult){tkzFirstPointResult} + \tkzRenamePoint(#1){tkzSecondPointResult} + \tkz@@CalcLengthcm(#1,tkzPointResult){tkzLengthResult}%3.06 add [cm] \endgroup } %<--------------------------------------------------------------------------–> @@ -152,6 +160,8 @@ \tkzDefMidPoint(#2,#3) \pgfnodealias{tkz@e2}{tkzPointResult} \tkzDefMidPoint(#1,#3) \pgfnodealias{tkz@e3}{tkzPointResult} \tkzCircumCenter(tkz@e1,tkz@e2,tkz@e3) + \pgfnodealias{tkzFirstPointResult}{tkzPointResult} + \tkzRenamePoint(tkz@e1){tkzSecondPointResult} \tkz@@CalcLengthcm(tkzPointResult,tkz@e1){tkzLengthResult} \endgroup } @@ -163,7 +173,7 @@ \tkzEulerCenter(#1,#2,#3) \pgfnodealias{eur@pta}{tkzPointResult} \tkzDefMidPoint(#1,#2) - \tkz@@CalcLengthcm(eur@pta,tkzPointResult){tkzLengthResult} + \tkz@@CalcLengthcm(eur@pta,tkzPointResult){tkzLengthResult} \endgroup } %<--------------------------------------------------------------------------–> @@ -172,66 +182,16 @@ \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) - \tkz@@CalcLengthcm(tkzPointResult,tkzFirstPointResult){tkzLengthResult} -\endgroup -} -%<--------------------------------------------------------------------------–> -% Apollonius radius -%<--------------------------------------------------------------------------–> -\pgfkeys{/tkzapor/.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{/tkzapor}{#1} - \tkz@VecK[\tkz@koeff/(1+\tkz@koeff)](#2,#3) \pgfnodealias{apo@pta}{tkzPointResult} - \tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#2,#3) + \tkz@VecK[\tkz@koeff/(\tkz@koeff-1)](#1,#2) \pgfnodealias{apo@ptb}{tkzPointResult} \tkzDefMidPoint(apo@pta,apo@ptb) - \tkz@@CalcLengthcm(tkzPointResult,apo@pta){tkzLengthResult} -\endgroup -} -%<--------------------------------------------------------------------------–> -% Apollonius point -%<--------------------------------------------------------------------------–> - -\pgfkeys{/tkzapop/.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{/tkzapop}{#1} - \tkzDefBarycentricPoint(#2=1,#3=\tkz@koeff) + \pgfnodealias{tkzFirstPointResult}{tkzPointResult} + \tkz@@CalcLengthcm(tkzFirstPointResult,apo@pta){tkzLengthResult} + \tkzDefBarycentricPoint(#1=1,#2=\tkz@koeff) + \pgfnodealias{tkzSecondPointResult}{tkzPointResult} \endgroup -} -%<--------------------------------------------------------------------------–> -% Apollonius center -%<--------------------------------------------------------------------------–> -\pgfkeys{/tkzapoc/.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{/tkzapoc}{#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 @@ -248,6 +208,8 @@ \pgfnodealias{tkz@PointResult}{tkzPointResult} \tkzCircumCenter(tkz@PointResult,#3,#4) \tkz@@CalcLengthcm(tkzPointResult,#3){tkzLengthResult} + \pgfnodealias{tkzFirstPointResult}{tkzPointResult} + \pgfnodealias{tkzSecondPointResult}{#3} \endgroup } %<--------------------------------------------------------------------------–> @@ -256,34 +218,14 @@ \def\tkzDefSpiekerCircle(#1,#2,#3){% \begingroup \tkzSpiekerCenter(#1,#2,#3) - \pgfnodealias{tkz@spka}{tkzPointResult} - \tkzDefMidPoint(#1,#2) - \tkzUProjection(#1,#2)(tkzPointResult) - \tkz@@CalcLength(tkz@spka,tkzPointResult){tkzLengthResult} -\endgroup -} -%<--------------------------------------------------------------------------–> -\def\tkzDefInversionCircle(#1,#2,#3,#4){% -\begingroup - \tkzInterLC(#3,#1)(#1,#2) \tkzGetPoints{tkz@p1}{tkz@p2} - \tkzUInversePoint(#3,#4)(tkz@p1) - \pgfnodealias{tkzFirstPointResult}{tkzPointResult} - \tkzUInversePoint(#3,#4)(tkz@p2) + \pgfnodealias{tkzFirstPointResult}{tkzPointResult} + \tkzUProjection(tkz@m1,tkz@m2)(tkzPointResult) \pgfnodealias{tkzSecondPointResult}{tkzPointResult} + \tkz@@CalcLength(tkzSecondPointResult,tkzFirstPointResult){tkzLengthResult} \endgroup } %<--------------------------------------------------------------------------–> -\def\tkzDefInversionNegativeCircle(#1,#2,#3,#4){% -\begingroup - \tkzInterLC(#3,#1)(#1,#2) \tkzGetPoints{tkz@p1}{tkz@p2} - \tkzUInversePoint(\tkzcenter,\tkzpoint)(tkz@p1) - \tkzUCSym(\tkzcenter)(tkzPointResult) - \pgfnodealias{tkzFirstPointResult}{tkzPointResult} - \tkzUInversePoint(\tkzcenter,\tkzpoint)(tkz@p2) - \tkzUCSym(\tkzcenter)(tkzPointResult) - \pgfnodealias{tkzSecondPointResult}{tkzPointResult} -\endgroup -} + %<--------------------------------------------------------------------------–> % End Def Circle %<--------------------------------------------------------------------------–> diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-compass.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-compass.tex index 37ab27d8e7..17c1be69b5 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-compass.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-compass.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-compass.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-compass.tex} \makeatletter %<--------------------------------------------------------------------------–> % Author Alain Matthes @@ -24,22 +24,23 @@ % Setup Compass %<--------------------------------------------------------------------------–> \pgfkeys{tkzsucompass/.cd, - line width/.store in = \tkz@compass@lw, - color/.store in = \tkz@compass@color, - style/.store in = \tkz@compass@style, - line width = \tkz@euc@compasswidth, - color = \tkz@euc@compasscolor, - style = \tkz@euc@compassstyle, - /tkzsucompass/.search also = {/tikz,/tkzcompass} + line width/.store in = \tkz@compass@lw, + color/.store in = \tkz@compass@color, + style/.store in = \tkz@compass@style, + line width = \tkz@euc@compasswidth, + color = \tkz@euc@compasscolor, + style = \tkz@euc@compassstyle, + /tkzsucompass/.search also = {/tikz,/tkzcompass} } %<--------------------------------------------------------------------------–> \def\tkzSetUpCompass{\pgfutil@ifnextchar[{\tkz@SetUpCompass}{\tkz@SetUpCompass[]}} %<--------------------------------------------------------------------------–> \def\tkz@SetUpCompass[#1]{% \pgfqkeys{/tkzsucompass}{#1} -\tikzset{compass style/.style={color = \tkz@compass@color, - line width = \tkz@compass@lw, - style = \tkz@compass@style +\tikzset{compass style/.style={% + color = \tkz@compass@color, + line width = \tkz@compass@lw, + style = \tkz@compass@style }} } %<--------------------------------------------------------------------------–> diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-angles.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-angles.tex index a0fb399aee..6234a361b3 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-angles.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-angles.tex @@ -10,20 +10,20 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-tool-eu-angles.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tool-eu-angles.tex} \makeatletter %<--------------------------------------------------------------------------–> % tkzSetUpArc %<--------------------------------------------------------------------------–> \pgfkeys{/tkzsetuparc/.cd, - color/.store in = \tkz@arc@color, - line width/.store in = \tkz@arc@lw, - style/.store in = \tkz@arc@style, - line width = \tkz@euc@linewidth, - color = \tkz@euc@linecolor, - style = \tkz@euc@linestyle, + color/.store in = \tkz@arc@color, + line width/.store in = \tkz@arc@lw, + style/.store in = \tkz@arc@style, + line width = \tkz@euc@linewidth, + color = \tkz@euc@linecolor, + style = \tkz@euc@linestyle, /tkzsetuparc/.search also = {/tikz,/tkzcompass}, } \def\tkzSetUpArc{\pgfutil@ifnextchar[{\tkz@SetUpArc}{\tkz@SetUpArc[]}} @@ -34,16 +34,12 @@ style = \tkz@arc@style }} }% end setup -%<---------------------------------------------------------------------------> -\newdimen\tkz@arcsize% from julian julian@d-and-j.net -\newdimen\tkz@fillsize -%<--------------------------------------------------------------------------> - %<------------------------------ Arcs -------------------------------------– % options : delta % \def\tkz@delta{0} % \tikzset{arc style/.style={#1}} % \pgfkeys{/tikz/.cd,delta/.code={\def\tkz@delta{#1}}} +\newif\iftkz@reverse \gdef\tkz@numa{0} \pgfkeys{/tkzdrawarc/.cd, type/.is choice, @@ -67,6 +63,9 @@ type/.default = towards, delta/.store in = \tkz@delta, delta = 0, + reverse/.is if = tkz@reverse, + reverse/.default = true, + reverse = false, /tkzdrawarc/.search also = {/tikz} } \def\tkzDrawArc{\pgfutil@ifnextchar[{\tkz@DrawArc}{\tkz@DrawArc[]}} @@ -81,7 +80,7 @@ \tkzDrawArcAngles[#1](#2,#3)(#4) \or% 3 \tkzDrawArcRAngles[#1](#2,#3)(#4) - \or% 4 +\or% 4 \tkzDrawArcR[#1](#2,#3)(#4) \fi \endgroup @@ -167,29 +166,19 @@ \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 + \begingroup + \tkzNormalizeAngle(#4,#5) \pgfmathsubtract{\tkz@FirstAngle}{\tkz@delta} \edef\tkz@FirstAngle{\pgfmathresult}% \pgfmathadd{\tkz@SecondAngle}{\tkz@delta} \edef\tkz@SecondAngle{\pgfmathresult} - \draw[shift = {(#2)},arc style,/tkzdrawarc/.cd,#1]% - (\tkz@FirstAngle:#3) arc (\tkz@FirstAngle:\tkz@SecondAngle:#3); + \iftkz@reverse + \let\tkztemp\tkz@FirstAngle + \let\tkz@FirstAngle\tkz@SecondAngle + \let\tkz@SecondAngle\tkztemp + \fi + \draw[shift = {(#2)},arc style,/tkzdrawarc/.cd,#1]% + (\tkz@FirstAngle:#3) arc (\tkz@FirstAngle:\tkz@SecondAngle:#3); \endgroup } %<--------------------------------------------------------------------------–> @@ -212,22 +201,7 @@ \tkz@@CalcLength(#2,#3){tkz@radius} \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz@FirstAngle} \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz@SecondAngle} -\pgfmathparse{\tkz@FirstAngle}\edef\tkz@FirstAngle{\pgfmathresult}% -\pgfmathparse{\tkz@SecondAngle}\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 +\tkzNormalizeAngle(\tkz@FirstAngle,\tkz@SecondAngle) \pgfmathsubtract{\tkz@FirstAngle}{\tkz@delta} \edef\tkz@FirstAngle{\pgfmathresult}% \pgfmathadd{\tkz@SecondAngle}{\tkz@delta} @@ -246,22 +220,7 @@ \tkz@@CalcLength(#2,#3){tkz@radius} \tkzFindSlopeAngle(#2,#3)\tkzGetAngle{tkz@FirstAngle} \tkzFindSlopeAngle(#2,#4)\tkzGetAngle{tkz@SecondAngle} -\pgfmathparse{\tkz@FirstAngle}\edef\tkz@FirstAngle{\pgfmathresult}% -\pgfmathparse{\tkz@SecondAngle}\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 +\tkzNormalizeAngle(\tkz@FirstAngle,\tkz@SecondAngle) \pgfmathsubtract{\tkz@FirstAngle}{\tkz@delta} \edef\tkz@FirstAngle{\pgfmathresult}% \pgfmathadd{\tkz@SecondAngle}{\tkz@delta} @@ -307,7 +266,7 @@ % dist ? % style : type de traits % position: 0.5 -% mark : none , |, ||,|||, z, s, x, o, oo mais tous les +% mark : none , , , , z, s, x, o, oo mais tous les % % symboles de tikz sont permis %<------------------------- Label on angle --------------------------------> \def\tkz@arcsimple{l} @@ -395,7 +354,21 @@ \endgroup } % fin de \tkzMarkAngle - +%<---------------------------------------------------------------------------> +% Pic Angle +%<---------------------------------------------------------------------------> +\def\tkzPicAngle{\pgfutil@ifnextchar[{\tkz@PicAngle}{\tkz@PicAngle[]}} +\def\tkz@PicAngle[#1](#2,#3,#4){% +\begingroup +\draw pic [#1]{angle=#2--#3--#4}; +\endgroup +} +\def\tkzPicRightAngle{\pgfutil@ifnextchar[{\tkz@PicRightAngle}{\tkz@PicRightAngle[]}} +\def\tkz@PicRightAngle[#1](#2,#3,#4){% +\begingroup +\draw pic [#1]{right angle=#2--#3--#4}; +\endgroup +} %<---------------------------------------------------------------------------> % FillAngle %<---------------------------------------------------------------------------> @@ -451,11 +424,12 @@ \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}} + \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[label angle style,/tkzlabelangle/.cd,#1] {#5}; + \path (#3) --+(\tkzlabelAngle:\tkzlabeldist) node[label angle style,% + /tkzlabelangle/.cd,#1] {#5}; \endgroup } %<---------------------------------------------------------------------------> @@ -546,6 +520,18 @@ \next#2 \@nil % \endgroup } - +%<---------------------------------------------------------------------------> +% tkzdefMidArc center and two points +\def\tkzDefMidArc(#1,#2,#3){% +\begingroup +\tkz@@CalcLength(#1,#2){tkz@radius} +\tkzFindSlopeAngle(#1,#2)\tkzGetAngle{tkz@FirstAngle} +\tkzFindSlopeAngle(#1,#3)\tkzGetAngle{tkz@SecondAngle} +\tkzNormalizeAngle(\tkz@FirstAngle,\tkz@SecondAngle) + \path[shift = {(#1)}](\tkz@FirstAngle:\tkz@radius pt) arc + (\tkz@FirstAngle:\tkz@SecondAngle:\tkz@radius pt) coordinate[midway] (tkzPointResult); +\endgroup +} + \makeatother \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-circles.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-circles.tex index fcc2a6fa9b..5fd3356bc4 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-circles.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-circles.tex @@ -10,67 +10,48 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-draw-circles.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-draw-circles.tex} \makeatletter - - -\def\tkz@numdc{0} -\pgfkeys{/tkzdrawc/.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, - /tkzdrawc/.search also={/tikz} -} %<--------------------------------------------------------------------------–> +% tkzSetUpCircle %<--------------------------------------------------------------------------–> -% Drawing a circle > -%<--------------------------------------------------------------------------–> +\pgfkeys{% + /tkzsetupcirc/.cd, + color/.code = \def\tkz@circle@color{#1}, + line width/.code = \def\tkz@circle@linewidth{#1}, + style/.code = \def\tkz@circle@style{#1}, + /tkzsetupcirc/.search also = {/tikz} + } + %<--------------------------------------------------------------------------–> + +\def\tkzSetUpCircle{\pgfutil@ifnextchar[{\tkz@SetUpCircle}{\tkz@SetUpCircle[]}} +\def\tkz@SetUpCircle[#1]{% +\pgfkeys{% + tkzsetupcirc/.cd, + line width = \tkz@euc@circlelw, + color = \tkz@euc@circlecolor, + style = \tkz@euc@circlestyle +} +\pgfqkeys{/tkzsetupcirc}{#1} +\tikzset{% + circle style/.append style = { % + color = \tkz@circle@color, + line width = \tkz@circle@linewidth, + style = \tkz@circle@style, + #1} + } +}% end setup + %<--------------------------------------------------------------------------–> + \def\tkzDrawCircle{\pgfutil@ifnextchar[{\tkz@DrawCircle}{\tkz@DrawCircle[]}} -\def\tkz@DrawCircle[#1](#2){% +\def\tkz@DrawCircle[#1](#2,#3){% \begingroup -\pgfqkeys{/tkzdrawc}{#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,/tkzdrawc/.cd,#1] (tkzPointResult) circle (\tkzLengthResult); +\node [draw,circle through=(#3), circle style,#1] at (#2) {}; \endgroup } - -%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> \def\tkz@multicircles#1 #2\@nil{% \protected@edef\tkz@temp{ \noexpand \tkzDrawCircle[\tkz@optcircle](#1)}\tkz@temp% @@ -79,7 +60,7 @@ \let\next\@gobble \fi \next#2\@nil -} +}% %<--------------------------------------------------------------------------–> \def\tkzDrawCircles{\pgfutil@ifnextchar[{\tkz@DrawCircles}{\tkz@DrawCircles[]}} \def\tkz@DrawCircles[#1](#2){% @@ -90,58 +71,31 @@ \endgroup }% %<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> % #2 #3 rayon -\def\tkz@numdsc{0} \pgfkeys{/tkzdrawsc/.cd, - through/.code = \def\tkz@numdsc{0}, - diameter/.code = \def\tkz@numdsc{1}, swap/.is if = tkz@swap@sc, swap/.default = true, swap = false, - through, - /tkzdrawsc/.search also={/tikz} - } +/tkzdrawsc/.search also={/tikz} +} \def\tkzDrawSemiCircle{\pgfutil@ifnextchar[{\tkz@DrawSemiCircle}{% - \tkz@DrawSemiCircle[]}} -\def\tkz@DrawSemiCircle[#1](#2){% + \tkz@DrawSemiCircle[]}} +\def\tkz@DrawSemiCircle[#1](#2,#3){% \begingroup -\pgfqkeys{/tkzdrawsc}{#1} -\ifcase\tkz@numdsc% - \tkzDrawSemiCircleThrough(#2) -\or% - \tkzDrawSemiCircleDiameter(#2) +\pgfqkeys{/tkzdrawsc}{#1} + \tkzDefPointBy[symmetry=center #2](#3) + \pgfnodealias{tkz@pt}{tkzPointResult} + \iftkz@swap@sc + \gdef\tkz@FirstPoint{tkz@pt} + \gdef\tkz@SecondPoint{#3} + \else + \gdef\tkz@FirstPoint{#3} + \gdef\tkz@SecondPoint{tkz@pt} \fi - \tkzDrawArc[#1,delta=0](\tkz@Center,\tkz@FirstPoint)(\tkz@SecondPoint) + \tkzDrawArc[#1,delta=0](#2,\tkz@FirstPoint)(\tkz@SecondPoint) \endgroup -} +}% %<--------------------------------------------------------------------------–> -\def\tkzDrawSemiCircleThrough(#1,#2){% - \tkzDefPointBy[symmetry=center #1](#2) - \pgfnodealias{tkz@pt}{tkzPointResult} - \def\tkz@Center{#1} - \iftkz@swap@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@swap@sc - \def\tkz@FirstPoint{#1} - \def\tkz@SecondPoint{#2} - \else - \def\tkz@FirstPoint{#2} - \def\tkz@SecondPoint{#1} - \fi -} -%<--------------------------------------------------------------------------–> \def\tkz@multisemicircles#1 #2\@nil{% \protected@edef\tkz@temp{ \noexpand \tkzDrawSemiCircle[\tkz@optsemicircle](#1)}\tkz@temp% @@ -150,11 +104,10 @@ \let\next\@gobble \fi \next#2\@nil -} -%<--------------------------------------------------------------------------–> +}% %<--------------------------------------------------------------------------–> \def\tkzDrawSemiCircles{\pgfutil@ifnextchar[{\tkz@DrawSemiCircles}{% - \tkz@DrawSemiCircles[]}} +\tkz@DrawSemiCircles[]}} \def\tkz@DrawSemiCircles[#1](#2){% \xdef\tkz@optsemicircle{#1} \begingroup @@ -162,84 +115,57 @@ \next#2 \@nil % \endgroup }% -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> %<---------------------------- 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 - \tkz@@CalcLength(#2,#3){tkzLengthResult} - \fill[/fillcircle/.cd,#1] (#2) circle (\tkzLengthResult pt);% - \or% 1 - \fill[/fillcircle/.cd,#1] (#2) circle (#3);% - \fi + \node [fill,circle through=(#3),#1] at (#2) {}; \endgroup -} +}% +\def\tkz@multifillcircles#1 #2\@nil{% +\protected@edef\tkz@temp{ +\noexpand \tkzFillCircle[\tkz@optfillcircle](#1)}\tkz@temp% +\def\tkz@nextArg{#2}% +\ifx\tkzutil@empty\tkz@nextArg + \let\next\@gobble +\fi +\next#2\@nil +}% +\def\tkzFillCircles{\pgfutil@ifnextchar[{\tkz@FillCircles}{% +\tkz@FillCircles[]}} +\def\tkz@FillCircles[#1](#2){% +\xdef\tkz@optfillcircle{#1} +\begingroup + \let\next\tkz@multifillcircles + \next#2 \@nil % +\endgroup +}% %<--------------------------- Clip Circle ---------------------------------–> -\def\tkz@numcc{0} \pgfkeys{/tkzclipc/.cd, - through/.code = \def\tkz@numcoc{0}, - R/.code = \def\tkz@numcoc{1}, out code/.is if = tkzClipOutCircle, - out/.code = \tkzClipOutCirclefalse, - through} + out/.code = \tkzClipOutCirclefalse +}% %<--------------------------------------------------------------------------–> \def\tkzClipCircle{\pgfutil@ifnextchar[{\tkz@ClipCircle}{\tkz@ClipCircle[]}} - \def\tkz@ClipCircle[#1](#2,#3){% \tkzClipOutCircletrue \pgfqkeys{/tkzclipc}{#1} -\ifcase\tkz@numcoc \tkz@@CalcLength(#2,#3){tkzLengthResult} \iftkzClipOutCircle - \clip (#2) circle (\tkzLengthResult pt); + \clip (#2) circle (\tkzLengthResult pt); \else - \clip (#2) circle (\tkzLengthResult pt) [tkzreverseclip] ; + \clip (#2) circle (\tkzLengthResult pt) [tkzreverseclip] ; \fi - \or% 1 - \iftkzClipOutCircle - \clip (#2) circle (#3); - \else - \clip (#2) circle (#3) [tkzreverseclip] ; - \fi - \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{/tkzlabelc/.cd, - through/.code = \def\tkz@numlc{0}, - R/.code = \def\tkz@numlc{1}, - through, - /tkzlabelc/.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 +% [option] (#2,#3) #2 center #3 un point du cercle #4 angle #5 the label \def\tkz@LabelCircle[#1](#2,#3)(#4)#5{% \begingroup -\pgfqkeys{/tkzlabelc}{#1} -\ifcase\tkz@numlc \tkzURotateAngle(#2,#4)(#3) - \node[/tkzlabelc/.cd,#1] at (tkzPointResult) {#5}; -\or% 1 - \path (#2)--++(#3,0) coordinate (tkzPointResult); - \tkzURotateAngle(#2,#4)(tkzPointResult) - \node[/tkzlabelc/.cd,#1] at (tkzPointResult) {#5}; -\fi + \node[label style,#1] at (tkzPointResult) {#5}; \endgroup } \makeatother diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-lines.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-lines.tex index 77dbe4f889..a415218816 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-lines.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-lines.tex @@ -10,22 +10,54 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-draw-lines.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-draw-lines.tex} \makeatletter -\def\tkz@numdl{0} -\pgfkeys{/tkzdrawl/.cd, - /tkzdrawl/.search also={/tikz} +%<--------------------------------------------------------------------------–> +% Setup Line +%<--------------------------------------------------------------------------–> +\pgfkeys{% + tkzsuline/.cd, + line width/.code = \def\tkz@line@width{#1}, + color/.code = \def\tkz@line@color{#1}, + style/.code = \def\tkz@line@style{#1}, + add/.code args = {#1 and #2} {\def\tkz@line@left{#1} + \def\tkz@line@right{#2}}, + /tkzsuline/.search also = {/tikz} } %<--------------------------------------------------------------------------–> +\def\tkzSetUpLine{\pgfutil@ifnextchar[{\tkz@SetUpLine}{\tkz@SetUpLine[]}} +\def\tkz@SetUpLine[#1]{% +\pgfkeys{% + tkzsuline/.cd, + line width = \tkz@euc@linewidth, + color = \tkz@euc@linecolor, + style = \tkz@euc@linestyle, + add = {\tkz@euc@lineleft} and {\tkz@euc@lineright}} +\pgfqkeys{/tkzsuline}{#1} +\tikzset{% + line style/.append style ={% + line width = \tkz@line@width, + color = \tkz@line@color, + style = \tkz@line@style, + add = {\tkz@line@left} and {\tkz@line@right}, + line cap = round, + #1} + } +}% end setup +%<--------------------------------------------------------------------------–> % Drawing a line %<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> +% \pgfkeys{/tkzdrawl/.cd, +% /tkzdrawl/.search also={/tikz} +% } \def\tkzDrawLine{\pgfutil@ifnextchar[{\tkz@DrawLine}{\tkz@DrawLine[]}} \def\tkz@DrawLine[#1](#2,#3){% \begingroup -\pgfqkeys{/tkzdrawl}{#1} + % \pgfqkeys{/tkzdrawl}{#1} \draw[line style,#1] (#2) to (#3); \endgroup } @@ -56,39 +88,7 @@ \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{% - tkzsuline/.cd, - line width/.code = \def\tkz@line@lw{#1}, - color/.code = \def\tkz@line@color{#1}, - style/.code = \def\tkz@line@style{#1}, - add/.code args = {#1 and #2} {\def\tkz@line@left{#1} - \def\tkz@line@right{#2}}, - /tkzsuline/.search also={/tikz}% -} -%<--------------------------------------------------------------------------–> -\def\tkzSetUpLine{\pgfutil@ifnextchar[{\tkz@SetUpLine}{% remove tkzActivOff 3.03 - \tkz@SetUpLine[]}} -\def\tkz@SetUpLine[#1]{% -\pgfkeys{% - tkzsuline/.cd, - line width = \tkz@euc@linewidth, - color = \tkz@euc@linecolor, - style = \tkz@euc@linestyle, - add = {\tkz@euc@lineleft} and {\tkz@euc@lineright}} -\pgfqkeys{/tkzsuline}{#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) %<--------------------------------------------------------------------------–> @@ -134,7 +134,7 @@ size = 4pt, color = \tkz@mk@color, pos = .5, - mark = |, + mark = , /@tkzmarkoptions/.search also={/tikz}, } \def\tkzMarkSegment{\pgfutil@ifnextchar[{\tkz@MarkSegment}{\tkz@MarkSegment[]}} @@ -175,7 +175,7 @@ {\tkz@LabelSegment[]}} \def\tkz@LabelSegment[#1](#2,#3)#4{% \begingroup - \path (#2) to node[label seg style,#1]{#4} (#3) ; + \path (#2) to node[label style,#1]{#4} (#3) ; \endgroup } %<--------------------------------------------------------------------------–> diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-points.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-points.tex new file mode 100644 index 0000000000..ee9d5bbbc7 --- /dev/null +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-points.tex @@ -0,0 +1,172 @@ + % tkz-obj-eu-points.tex +% Copyright 2022 Alain Matthes +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% This work has the LPPL maintenance status “maintained”. +% The Current Maintainer of this work is Alain Matthes. + +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-points.tex} +\makeatletter +%<---------------------------------------------------------------------------> +% tkzSetUpPoint définit la forme d'un point +%<---------------------------------------------------------------------------> +\pgfkeys{/tkzsetuppt/.cd, + size/.store in = \tkz@pt@size, + color/.store in = \tkz@pt@color, + fill/.store in = \tkz@pt@fill, + shape/.store in = \tkz@pt@shape, + size = \tkz@euc@pointsize, + color = \tkz@euc@pointcolor, + fill = \tkz@euc@pointcolor, + shape = \tkz@euc@pointshape, + /tkzsetuppt/.search also = {/tikz}, + } +\def\tkzSetUpPoint{\pgfutil@ifnextchar[{\tkz@SetUpPoint}{% + \tkz@SetUpPoint[]}} +\def\tkz@SetUpPoint[#1]{% +\pgfqkeys{/tkzsetuppt}{#1} +% redefine point style with new values +\tikzset{point style/.style={draw = \tkz@pt@color, + inner sep = 0pt, + shape = \tkz@pt@shape, + minimum size = \tkz@pt@size, + fill = \tkz@pt@fill}} +}% end setup +%<---------------------------------------------------------------------------> +% Draw Point +%<---------------------------------------------------------------------------> +\pgfkeys{/tkzdrawpt/.cd, + size/.code = {\tikzset{point style/.append style={minimum size = #1}}}, + size = \tkz@euc@pointsize, + /tkzdrawpt/.search also = {/tikz}, +} +%<-------------------------------------------------------------------------- +\def\tkzDrawPoint{\pgfutil@ifnextchar[{\tkz@DrawPoint}{\tkz@DrawPoint[]}} +\def\tkz@DrawPoint[#1](#2){% +\begingroup + \pgfqkeys{/tkzdrawpt}{#1} + \node[point style,/tkzdrawpt/.cd,#1] at (#2) {};%2016 +\endgroup +} +%<---------------------------------------------------------------------------> +\def\tkzDrawPoints{\pgfutil@ifnextchar[{\tkz@drawpts}{\tkz@drawpts[]}} +%<---------------------------------------------------------------------------> +\def\tkz@drawpts[#1](#2){% +\begingroup + \pgfqkeys{/tkzdrawpt}{#1} + \foreach \point in {#2}{\node[point style,/tkzdrawpt/.cd,#1] at (\point) {};} %2016 +\endgroup +} +%<--------------------------------------------------------------------------> +% tkzLabelPoint Affichage des LABELS pour un point +%<--------------------------------------------------------------------------> +\def\tkzLabelPoint{\pgfutil@ifnextchar[{\tkz@LabelPoint}{\tkz@LabelPoint[]}} +\def\tkz@LabelPoint[#1](#2)#3{% + \node[label style,#1] at (#2) {#3};}% +%<---------------------------------------------------------------------------> + +\def\tkzLabelPoints{\pgfutil@ifnextchar[{\tkz@LabelPoints}{\tkz@LabelPoints[]}}% +\def\tkz@LabelPoints[#1](#2){% + \foreach \point in {#2}{ + \node[label style,#1] at (\point) {$\point$};} +}% +%<---------------------------------------------------------------------------> +\pgfkeys{/tkzsetuppt/.cd, + size/.store in = \tkz@pt@size, + color/.store in = \tkz@pt@color, + fill/.store in = \tkz@pt@fill, + shape/.store in = \tkz@pt@shape, + size = \tkz@euc@pointsize, + color = \tkz@euc@pointcolor, + fill = \tkz@euc@pointcolor, + shape = \tkz@euc@pointshape, + /tkzsetuppt/.search also = {/tikz}, + } +\def\tkzSetUpPoint{\pgfutil@ifnextchar[{\tkz@SetUpPoint}{% + \tkz@SetUpPoint[]}} +\def\tkz@SetUpPoint[#1]{% +\pgfqkeys{/tkzsetuppt}{#1} +% redefine point style with new values +\tikzset{point style/.style={draw = \tkz@pt@color, + inner sep = 0pt, + shape = \tkz@pt@shape, + minimum size = \tkz@pt@size, + fill = \tkz@pt@fill}} +}% end setup +%<---------------------------------------------------------------------------> +% +%<---------------------------------------------------------------------------> +\def\tkzSetUpLabel{\pgfutil@ifnextchar[{\tkz@SetUpLabel}{% + \tkz@SetUpLabel[]}} +\def\tkz@SetUpLabel[#1]{% +\tikzset{label style/.style={#1}} +}% end setup +%<---------------------------------------------------------------------------> + +\pgfkeys{/tkzautolab/.cd, + center/.store in = \tkz@center, + dist/.store in = \tkz@dist, + dist = 0.15, + /tkzautolab/.search also = {/tikz}, +} +\def\tkzAutoLabelPoints{\pgfutil@ifnextchar[{\tkz@AutoLabelPoints}{\tkz@AutoLabelPoints[]}}% +\def\tkz@AutoLabelPoints[#1](#2){% +\begingroup +\pgfqkeys{/tkzautolab}{#1} + \foreach \point in {#2}{ + \path (\tkz@center) -- ($ (\point) + \tkz@dist*($(\point)-(\tkz@center)$) $) node[/tkzautolab/.cd,label style,#1]{$\point$};} +\endgroup +}% +%<---------------------------------------------------------------------------> +% PointShowCoord +%<---------------------------------------------------------------------------> +\pgfkeys{/tkzprcoord/.cd, + xlabel/.store in = \tkz@xlabel, + ylabel/.store in = \tkz@ylabel, + xstyle/.code = {\tikzset{xcoord style/.append style={#1}}}, + ystyle/.code = {\tikzset{ycoord style/.append style={#1}}}, + noxdraw/.is if = tkz@coord@noxdraw, + noxdraw/.default = true, + noydraw/.is if = tkz@coord@noydraw, + noydraw/.default = true, + xlabel = {}, + ylabel = {}, + xstyle = {}, + ystyle = {}, + noxdraw = false, + noydraw = false, + /tkzprcoord/.search also = {/tikz}, +} +\def\tkzPointShowCoord{\pgfutil@ifnextchar[{\tkz@PointShowCoord}{\tkz@PointShowCoord[]}} +\def\tkz@PointShowCoord[#1](#2){% +\begingroup +\pgfqkeys{/tkzprcoord}{#1} +% 2019 for showcoord + \iftkznodedefined{tkz@xline}{}{% + \path (0,0) --(1,0) node(tkz@xline){}; + \path (0,0) --(0,1) node(tkz@yline){}; + } +\iftkz@coord@noxdraw\else\draw[arrow coord style,/tkzprcoord/.cd,#1] (#2)--(#2 - tkz@xline);\fi +\iftkz@coord@noydraw\else\draw[arrow coord style,/tkzprcoord/.cd,#1] (#2)--(#2 - tkz@yline);\fi +\ifx\tkzutil@empty\tkz@xlabel +\else +\path (#2)--(#2 - tkz@xline) + node[xcoord style] {\tkz@xlabel}; +\fi +\ifx\tkzutil@empty\tkz@ylabel +\else + \path (#2)--(#2 - tkz@yline) + node[ycoord style] {\tkz@ylabel}; +\fi +\endgroup +} +\let\tkzShowPointCoord\tkzPointShowCoord +\makeatother +\endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-polygons.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-polygons.tex index ebf53e42f1..b7e1b1faa0 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-polygons.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-polygons.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-polygons.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-polygons.tex} \makeatletter %<--------------------------------------------------------------------------–> % Polygon @@ -61,33 +61,33 @@ \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[line join=round,#1](#2) -| (#3) -| (#2); -\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[line join=round,#1](#2) - (#3) - (#2); + % \endgroup + % } %<-------------------------- gold rectangle -------------------------------–> % %<--------------------------------------------------------------------------–> -\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 -} -\let\tkzDrawGoldenRectangle\tkzDrawGoldRectangle + % \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 + % } + % \let\tkzDrawGoldenRectangle\tkzDrawGoldRectangle %<-------------- Labels for Regular Polygon -------------------------–> % %<--------------------------------------------------------------------------–> diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-triangles.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-triangles.tex index 113326de89..7e9cf513c8 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-triangles.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-draw-triangles.tex @@ -10,68 +10,46 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-draw-triangles.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-draw-triangles.tex} \makeatletter %<--------------------------------------------------------------------------–> % 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}}, - pythagoras/.code = {\def\tkz@numdtr{2}}, - egyptian/.code = {\def\tkz@numdtr{2}}, - school/.code = {\def\tkz@numdtr{3}}, - golden/.code = {\def\tkz@numdtr{4}}, - sublime/.code = {\def\tkz@numdtr{4}}, - euclid/.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}}, - isosceles right/.code = {\def\tkz@numdtr{9}}, - equilateral, - /drawtriangle/.search also={/tikz} -} +% \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}}, +% pythagoras/.code = {\def\tkz@numdtr{2}}, +% egyptian/.code = {\def\tkz@numdtr{2}}, +% school/.code = {\def\tkz@numdtr{3}}, +% golden/.code = {\def\tkz@numdtr{4}}, +% sublime/.code = {\def\tkz@numdtr{4}}, +% euclid/.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}}, +% isosceles right/.code = {\def\tkz@numdtr{9}}, +% equilateral, +% /drawtriangle/.search also={/tikz} +% } \def\tkzDrawTriangle{\pgfutil@ifnextchar[{\tkz@DrawTriangle}{% \tkz@DrawTriangle[]}} -\def\tkz@DrawTriangle[#1](#2,#3){% +\def\tkz@DrawTriangle[#1](#2,#3,#4){% \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) - \or% 9 - \tkzDefIsoscelesRightTriangle(#2,#3) -\fi - \draw[/drawtriangle/.cd,line style,line join=round,#1] (#2)--(#3)--(tkzPointResult)--cycle; +\draw[line style,line join=round,#1] (#2)--(#3)--(#4)--cycle; \endgroup } %<--------------------------------------------------------------------------–> \def\tkz@multitriangles#1 #2\@nil{% \protected@edef\tkz@temp{ +%\noexpand \tkzDrawTriangle[\tkz@opttrianle](#1)}\tkz@temp% \noexpand \tkzDrawPolygon[\tkz@opttrianle](#1)}\tkz@temp% \def\tkz@nextArg{#2}% \ifx\tkzutil@empty\tkz@nextArg diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-grids.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-grids.tex index 4e9fecae25..44f898faca 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-grids.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-grids.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-grids.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-grids.tex} \makeatletter %<--------------------------------------------------------------------------–> % Setup Grid diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-lines.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-lines.tex index 9dce18f48e..b07f40bc10 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-lines.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-lines.tex @@ -10,29 +10,29 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-lines.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c 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@numline{0} +\pgfkeys{/tkzdefline/.cd, + mediator/.code = \def\tkz@numline{0}, + perpendicular/.code args = {through #1} {\def\tkz@numline{1}% \def\tkz@through{#1}}, - orthogonal/.code args = {through #1} {\def\tkz@numl{1}% + orthogonal/.code args = {through #1} {\def\tkz@numline{1}% \def\tkz@through{#1}}, - parallel/.code args = {through #1}{\def\tkz@numl{2}% + parallel/.code args = {through #1}{\def\tkz@numline{2}% \def\tkz@through{#1}}, - bisector/.code = \def\tkz@numl{3}, - bisector out/.code = \def\tkz@numl{4}, - symmedian/.code = \def\tkz@numl{5}, - tangent at/.code = {#1}{\def\tkz@numl{6} \def\tkz@ptat{#1}}, - tangent from/.code = {#1}{\def\tkz@numl{7} \def\tkz@ptfrom{#1}}, - median/.code = \def\tkz@numl{8}, - altitude/.code = \def\tkz@numl{9}, + bisector/.code = \def\tkz@numline{3}, + bisector out/.code = \def\tkz@numline{4}, + symmedian/.code = \def\tkz@numline{5}, + altitude/.code = \def\tkz@numline{6}, + euler/.code = \def\tkz@numline{7}, + tangent from/.code = \def\tkz@numline{8} \def\tkz@ptfrom{#1}, + tangent at/.code = \def\tkz@numline{9} \def\tkz@ptat{#1}, K/.code = \def\tkz@koeff{#1}, K = 1, normed/.is if = tkz@line@normed, @@ -43,9 +43,9 @@ \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% +%\pgfkeys{/tkzdefline/.cd,K=1} +\pgfqkeys{/tkzdefline}{#1} +\ifcase\tkz@numline% % first case 0 \tkzDefMediatorLine(#2) \or% 1 @@ -58,10 +58,14 @@ \tkzDefBisectorOutLine(#2) \or% 5 \tkzDefSymmedianLine(#2) - \or% 6 - \tkzTgtAt(#1)(#2) + \or% 6 + \tkzDefAltitudeLine(#2) \or% 7 - \tkzTgtFromP(#1)(#2) + \tkzDefEulerLine(#2) + \or% 8 + \tkzTgtFromP(#2)(\tkz@ptfrom) + \or% 9 + \tkzTgtAt(#2)(\tkz@ptat) \fi \endgroup } @@ -194,6 +198,32 @@ \endgroup } %<--------------------------------------------------------------------------–> +% Altitude Line +%<--------------------------------------------------------------------------–> +\def\tkzDefAltitudeLine(#1,#2,#3){% +\begingroup + \pgfinterruptboundingbox + \tkzUProjection(#1,#3)(#2) + \pgfnodealias{ort@pta}{tkzPointResult} + \endpgfinterruptboundingbox +\endgroup +} +%<--------------------------------------------------------------------------–> +% Euler Line +%<--------------------------------------------------------------------------–> +\def\tkzDefEulerLine(#1,#2,#3){% +\begingroup + \pgfinterruptboundingbox + \tkzOrthoCenter(#1,#2,#3) + \pgfnodealias{euler@pt1}{tkzPointResult} + \tkzEulerCenter(#1,#2,#3) + \pgfnodealias{euler@pt2}{tkzPointResult} + \pgfnodealias{tkzSecondPointResult}{euler@pt2} + \pgfnodealias{tkzFirstPointResult}{euler@pt1} + \endpgfinterruptboundingbox +\endgroup +} +%<--------------------------------------------------------------------------–> % tangente à cercle passant par un point donné %<--------------------------------------------------------------------------–> diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-by.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-by.tex index 596ee3a0bc..699bd8bc37 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-by.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-by.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-tools-el-points-by.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-eu-points-by.tex} \makeatletter %<--------------------------------------------------------------------------–> % Transformations Géométriques @@ -426,6 +426,10 @@ \tkzVecKNorm[\tkz@lnc](#1,#3) \endgroup } +% possible +% \tkzDefLine[tangent from =#3](#1,#2) +% \tkzTgtFromP(#1,#2)(#3) +% \tkzInterLL(tkzFirstPointResult,tkzSecondPointResult)(#1,#2) %<--------------------------------------------------------------------------–> % Inverse negative of a point %<--------------------------------------------------------------------------–> diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-rnd.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-rnd.tex index 06e792f6fd..b837215d48 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-rnd.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-rnd.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-el-points-rnd.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-points-rnd.tex} %<--------------------------------------------------------------------------–> \makeatletter %<-------------------------------------------------------------------------–> diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-spc.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-spc.tex index a67b375cd0..7b4f9966bb 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-spc.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-spc.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-el-points.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-points.tex} \makeatletter %add ExCenter %<--------------------------------------------------------------------------–> @@ -121,15 +121,15 @@ \begingroup \pgfqkeys{/tkzSimilitudeCenter}{#1} \ifcase\tkz@numhomo% - \tkzCalcLength(#2,#3) - \tkzGetLength{tkz@rt} - \tkzCalcLength(#4,#5) - \tkzGetLength{tkz@rf} + \tkz@@CalcLengthcm(#2,#3){tkz@rt}% + \tkz@@CalcLengthcm(#4,#5){tkz@rf}% \or% 1 - \def\tkz@rt{#3} - \def\tkz@rf{#5} + \def\tkz@rt{#3}% + \def\tkz@rf{#5}% \fi +\pgfinterruptboundingbox \path[coordinate](barycentric cs:#2=\tkz@rf,#4=\tkz@rt)coordinate (tkzPointResult); + \endpgfinterruptboundingbox \endgroup } \let\tkzDefIntHomotheticCenter\tkzDefIntSimilitudeCenter @@ -142,15 +142,15 @@ \begingroup \pgfqkeys{/tkzSimilitudeCenter}{#1} \ifcase\tkz@numhomo% - \tkzCalcLength(#2,#3) - \tkzGetLength{tkz@rt} - \tkzCalcLength(#4,#5) - \tkzGetLength{tkz@rf} + \tkz@@CalcLengthcm(#2,#3){tkz@rt}% + \tkz@@CalcLengthcm(#4,#5){tkz@rf}% \or% 1 - \def\tkz@rt{#3} - \def\tkz@rf{#5} + \def\tkz@rt{#3}% + \def\tkz@rf{#5}% \fi + \pgfinterruptboundingbox \path[coordinate](barycentric cs:#2=-\tkz@rf,#4=\tkz@rt) coordinate(tkzPointResult); + \endpgfinterruptboundingbox \endgroup } @@ -184,17 +184,25 @@ \def\tkzDefDivHarmonicExt(#1,#2,#3){% \begingroup - \tkz@@CalcLengthcm(#3,#1){tkz@da} - \tkz@@CalcLengthcm(#3,#2){tkz@db} - \path[coordinate] (barycentric cs:#1={-\tkz@db},#2={\tkz@da}) coordinate (tkzPointResult); +\pgfinterruptboundingbox + \tkz@VecKOrth[](#1,#2) \tkzGetPoint{tkz@px} + \tkzDefMidPoint(tkz@px,#2) \tkzGetPoint{tkz@py} + \tkzInterLL(tkz@px,#3)(#1,tkz@py) \tkzGetPoint{tkz@pz} + \tkzInterLL(#2,tkz@pz)(#1,tkz@px) \tkzGetPoint{tkz@px} + \tkzInterLL(tkz@py,tkz@px)(#1,#2) \tkzGetPoint{tkzPointResult} +\endpgfinterruptboundingbox \endgroup } \def\tkzDefDivHarmonicInt(#1,#2,#3){% \begingroup - \tkz@@CalcLengthcm(#3,#1){tkz@da} - \tkz@@CalcLengthcm(#3,#2){tkz@db} - \path[coordinate] (barycentric cs:#1={\tkz@db},#2={\tkz@da}) coordinate (tkzPointResult); +\pgfinterruptboundingbox + \tkz@VecKOrth[1](#1,#2) \tkzGetPoint{tkz@px} + \tkzDefMidPoint(tkz@px,#2) \tkzGetPoint{tkz@py} + \tkzInterLL(tkz@py,#3)(#1,tkz@px) \tkzGetPoint{tkz@pz} + \tkzInterLL(#2,tkz@pz)(#1,tkz@py) \tkzGetPoint{tkz@py} + \tkzInterLL(tkz@py,tkz@px)(#1,#2) \tkzGetPoint{tkzPointResult} +\endpgfinterruptboundingbox \endgroup } @@ -273,7 +281,7 @@ %<--------------------------------------------------------------------------–> % OrthoCenter %<--------------------------------------------------------------------------–> -\def\tkzOrthoCenter(#1,#2,#3){% H orthocentre +\def\tkzOrthoCenter(#1,#2,#3){% \begingroup \pgfinterruptboundingbox \tkzUProjection(#1,#2)(#3) @@ -332,7 +340,7 @@ \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)% +\tkzInterLLxy(\tkz@ax,\tkz@ay,\tkz@bx,\tkz@by)(\tkz@cx,\tkz@cy,\tkz@dx,\tkz@dy)% \endpgfinterruptboundingbox \endgroup } @@ -343,23 +351,22 @@ \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 +\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 @@ -369,23 +376,22 @@ \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 +\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 @@ -397,13 +403,13 @@ % 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) +\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 } @@ -415,19 +421,19 @@ \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) +\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 } @@ -441,13 +447,13 @@ \begingroup % we need to get the midpoints \pgfcoordinate{tkz@m3}{% - \pgfpointscale{0.5}{% - \pgfpointadd{\pgfpointanchor{#1}{center}}% - {\pgfpointanchor{#2}{center}}}}% + \pgfpointscale{0.5}{% + \pgfpointadd{\pgfpointanchor{#1}{center}}% + {\pgfpointanchor{#2}{center}}}}% \pgfcoordinate{tkz@m2}{% - \pgfpointscale{0.5}{% - \pgfpointadd{\pgfpointanchor{#1}{center}}% - {\pgfpointanchor{#3}{center}}}}% + \pgfpointscale{0.5}{% + \pgfpointadd{\pgfpointanchor{#1}{center}}% + {\pgfpointanchor{#3}{center}}}}% \pgfcoordinate{tkz@m1}{% \pgfpointscale{0.5}{% \pgfpointadd{\pgfpointanchor{#2}{center}}% @@ -462,13 +468,13 @@ \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) +\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 } @@ -480,12 +486,12 @@ \def\tkzNagelCenter(#1,#2,#3){% \begingroup \pgfinterruptboundingbox - \tkzDefExcentralTriangle(#1,#2,#3){tkz@a,tkz@b,tkz@c} - \tkzUProjection(#2,#3)(tkz@a) - \pgfnodealias{tkz@tgta}{tkzPointResult} - \tkzUProjection(#1,#2)(tkz@c) - \pgfnodealias{tkz@tgtc}{tkzPointResult} - \tkzInterLL(#1,tkz@tgta)(#3,tkz@tgtc) +\tkzDefExcentralTriangle(#1,#2,#3){tkz@a,tkz@b,tkz@c} +\tkzUProjection(#2,#3)(tkz@a) +\pgfnodealias{tkz@tgta}{tkzPointResult} +\tkzUProjection(#1,#2)(tkz@c) +\pgfnodealias{tkz@tgtc}{tkzPointResult} +\tkzInterLL(#1,tkz@tgta)(#3,tkz@tgtc) \endpgfinterruptboundingbox \endgroup } @@ -496,18 +502,18 @@ \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 +\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 @@ -518,14 +524,14 @@ \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 +\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 @@ -535,11 +541,11 @@ \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) +\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 } @@ -587,21 +593,40 @@ %<--------------------------------------------------------------------------–> \def\tkz@numptcirc{0} \pgfkeys{/tkzptcircle/.cd, - through/.code args = {angle #1 center #2 point #3} {\def\tkz@angle{#1}% - \def\tkz@center{#2}% - \def\tkz@through{#3}% - \def\tkz@numptcirc{0}}, - R/.code args = {angle #1 center #2 radius #3} {\def\tkz@angle{#1}% - \def\tkz@center{#2}% - \def\tkz@radius{#3}% - \def\tkz@numptcirc{1}}, +through/.code args = {center #1 angle #2 point #3} { \def\tkz@center{#1}% + \def\tkz@angle{#2}% + \def\tkz@through{#3}% + \def\tkz@numptcirc{0}}, +R/.code args = {center #1 angle #2 radius #3} { \def\tkz@center{#1}% + \def\tkz@angle{#2}% + \def\tkz@radius{#3}% + \def\tkz@numptcirc{1}}, +through in rad/.code args = {center #1 angle #2 point #3} { \def\tkz@center{#1}% + \def\tkz@angle{#2}% + \def\tkz@through{#3}% + \def\tkz@numptcirc{2}}, +R in rad/.code args = {center #1 angle #2 radius #3} { \def\tkz@center{#1}% + \def\tkz@angle{#2}% + \def\tkz@radius{#3}% + \def\tkz@numptcirc{3}} } -\def\tkzDefPointOnCircle{\pgfutil@ifnextchar[{\tkz@DefPointOnCircle}{\tkz@DefPointOnCircle[]}} + +\def\tkzDefPointOnCircle{\pgfutil@ifnextchar[{\tkz@DefPointOnCircle}{% + \tkz@DefPointOnCircle[]}} \def\tkz@DefPointOnCircle[#1]{% \begingroup \pgfqkeys{/tkzptcircle}{#1} \ifcase\tkz@numptcirc% \tkz@@CalcLengthcm(\tkz@center,\tkz@through){tkz@radius} + \or% 1 + \relax% + \or% 2 + \pgfmathparse{\tkz@angle\space r} + \let\tkz@angle\pgfmathresult + \tkz@@CalcLengthcm(\tkz@center,\tkz@through){tkz@radius} + \or% 3 + \pgfmathparse{\tkz@angle\space r} + \let\tkz@angle\pgfmathresult \fi \path (\tkz@center) --++(\tkz@angle:\tkz@radius) coordinate(tkzPointResult); \endgroup diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-with.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-with.tex index f8c6770812..728f7ab4df 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-with.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points-with.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-el-points-with.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-points-with.tex} \makeatletter %<--------------------------------------------------------------------------–> % Vectors @@ -22,7 +22,7 @@ % 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) +% v(CN) = v(AB) et v(CN) colineaire à v(CD) % A-->#1 B-->#2 C-->#3 D-->#4 N-->#5 ????? %<--------------------------------------------------------------------------–> %<--------------------------------------------------------------------------–> @@ -130,7 +130,7 @@ %<--------------------------------------------------------------------------–> % tkzVector K Orth coeff dans #1 % v(AN) perp v(AB) (v(AB) , v(AN) ) sens direct cercle trigo -% ||v(AN)||=||v(AB)|| +% v(AN) = v(AB) %<--------------------------------------------------------------------------–> % tkz@numv 1 \def\tkzVecKOrth{\pgfutil@ifnextchar[{\tkz@VecKOrth}{\tkz@VecKOrth[1]}} @@ -175,7 +175,7 @@ %<--------------------------------------------------------------------------–> % 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 +% v(AN =1 si #1 est vide ou =1 sinon v(AN =K %<--------------------------------------------------------------------------–> % tkz@numv 3 \def\tkzVecKOrthNorm{\pgfutil@ifnextchar[{\tkz@VecKOrthNorm}% @@ -195,8 +195,8 @@ }% %<--------------------------------------------------------------------------–> % 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 +% 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]}} diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points.tex index 7f8088b225..5bb4f41e88 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-points.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-points.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-points.tex} \makeatletter %<---------------------------------------------------------------------------> % init def point @@ -115,57 +115,6 @@ % \def\tkz@drawnode#1{\path[coordinate](\tkzpt@xa,\tkzpt@ya) coordinate(#1); % \tkz@DrawPt{#1} % } -%<---------------------------------------------------------------------------> -% tkzSetUpPoint définit la forme d'un point -%<---------------------------------------------------------------------------> -\pgfkeys{/tkzsetuppt/.cd, - size/.store in = \tkz@pt@size, - color/.store in = \tkz@pt@color, - fill/.store in = \tkz@pt@fill, - shape/.store in = \tkz@pt@shape, - size = \tkz@euc@pointsize, - color = \tkz@euc@pointcolor, - fill = \tkz@euc@pointcolor, - shape = \tkz@euc@pointshape, - /tkzsetuppt/.search also = {/tikz}, - } -\def\tkzSetUpPoint{\pgfutil@ifnextchar[{\tkz@SetUpPoint}{% - \tkz@SetUpPoint[]}} -\def\tkz@SetUpPoint[#1]{% -\pgfqkeys{/tkzsetuppt}{#1} -% redefine point style with new values -\tikzset{point style/.style={draw = \tkz@pt@color, - inner sep = 0pt, - shape = \tkz@pt@shape, - minimum size = \tkz@pt@size, - fill = \tkz@pt@fill}} -}% end setup -%<---------------------------------------------------------------------------> -% Draw Point -%<---------------------------------------------------------------------------> -\pgfkeys{/tkzdrawpt/.cd, - size/.code = {\tikzset{point style/.append style={minimum size = #1}}}, - size = \tkz@euc@pointsize, - /tkzdrawpt/.search also = {/tikz}, -} -%<-------------------------------------------------------------------------- -\def\tkzDrawPoint{\pgfutil@ifnextchar[{\tkz@DrawPoint}{\tkz@DrawPoint[]}} -\def\tkz@DrawPoint[#1](#2){% -\begingroup - \pgfqkeys{/tkzdrawpt}{#1} - \node[point style,/tkzdrawpt/.cd,#1] at (#2) {};%2016 -\endgroup -} -%<---------------------------------------------------------------------------> -\def\tkzDrawPoints{\pgfutil@ifnextchar[{\tkz@drawpts}{\tkz@drawpts[]}} -%<---------------------------------------------------------------------------> -\def\tkz@drawpts[#1](#2){% -\begingroup - \pgfqkeys{/tkzdrawpt}{#1} - \foreach \point in {#2}{\node[point style,/tkzdrawpt/.cd,#1] at (\point) {};} %2016 -\endgroup -} -%<---------------------------------------------------------------------------> % %<---------------------------------------------------------------------------> \def\tkzRenamePoint(#1)#2{\coordinate (#2) at (#1);} @@ -191,110 +140,6 @@ \coordinate (#3) at (#2); \end{scope} } -%<--------------------------------------------------------------------------> -% tkzLabelPoint Affichage des LABELS pour un point -%<--------------------------------------------------------------------------> -\def\tkzLabelPoint{\pgfutil@ifnextchar[{\tkz@LabelPoint}{\tkz@LabelPoint[]}} -\def\tkz@LabelPoint[#1](#2)#3{% - \node[label style,#1] at (#2) {#3};}% -%<---------------------------------------------------------------------------> - -\def\tkzLabelPoints{\pgfutil@ifnextchar[{\tkz@LabelPoints}{\tkz@LabelPoints[]}}% -\def\tkz@LabelPoints[#1](#2){% - \foreach \point in {#2}{ - \node[label style,#1] at (\point) {$\point$};} -}% -%<---------------------------------------------------------------------------> -\pgfkeys{/tkzsetuppt/.cd, - size/.store in = \tkz@pt@size, - color/.store in = \tkz@pt@color, - fill/.store in = \tkz@pt@fill, - shape/.store in = \tkz@pt@shape, - size = \tkz@euc@pointsize, - color = \tkz@euc@pointcolor, - fill = \tkz@euc@pointcolor, - shape = \tkz@euc@pointshape, - /tkzsetuppt/.search also = {/tikz}, - } -\def\tkzSetUpPoint{\pgfutil@ifnextchar[{\tkz@SetUpPoint}{% - \tkz@SetUpPoint[]}} -\def\tkz@SetUpPoint[#1]{% -\pgfqkeys{/tkzsetuppt}{#1} -% redefine point style with new values -\tikzset{point style/.style={draw = \tkz@pt@color, - inner sep = 0pt, - shape = \tkz@pt@shape, - minimum size = \tkz@pt@size, - fill = \tkz@pt@fill}} -}% end setup -%<---------------------------------------------------------------------------> -% -%<---------------------------------------------------------------------------> -\def\tkzSetUpLabel{\pgfutil@ifnextchar[{\tkz@SetUpLabel}{% - \tkz@SetUpLabel[]}} -\def\tkz@SetUpLabel[#1]{% -\tikzset{label style/.style={#1}} -}% end setup -%<---------------------------------------------------------------------------> - -\pgfkeys{/tkzautolab/.cd, - center/.store in = \tkz@center, - dist/.store in = \tkz@dist, - dist = 0.15, - /tkzautolab/.search also = {/tikz}, -} -\def\tkzAutoLabelPoints{\pgfutil@ifnextchar[{\tkz@AutoLabelPoints}{\tkz@AutoLabelPoints[]}}% -\def\tkz@AutoLabelPoints[#1](#2){% -\begingroup -\pgfqkeys{/tkzautolab}{#1} - \foreach \point in {#2}{ - \path (\tkz@center) -- ($ (\point) + \tkz@dist*($(\point)-(\tkz@center)$) $) node[/tkzautolab/.cd,#1]{$\point$};} -\endgroup -}% -%<---------------------------------------------------------------------------> -% PointShowCoord -%<---------------------------------------------------------------------------> -\pgfkeys{/tkzprcoord/.cd, - xlabel/.store in = \tkz@xlabel, - ylabel/.store in = \tkz@ylabel, - xstyle/.code = {\tikzset{xcoord style/.append style={#1}}}, - ystyle/.code = {\tikzset{ycoord style/.append style={#1}}}, - noxdraw/.is if = tkz@coord@noxdraw, - noxdraw/.default = true, - noydraw/.is if = tkz@coord@noydraw, - noydraw/.default = true, - xlabel = {}, - ylabel = {}, - xstyle = {}, - ystyle = {}, - noxdraw = false, - noydraw = false, - /tkzprcoord/.search also = {/tikz}, -} -\def\tkzPointShowCoord{\pgfutil@ifnextchar[{\tkz@PointShowCoord}{\tkz@PointShowCoord[]}} -\def\tkz@PointShowCoord[#1](#2){% -\begingroup -\pgfqkeys{/tkzprcoord}{#1} -% 2019 for showcoord - \iftkznodedefined{tkz@xline}{}{% - \path (0,0) --(1,0) node(tkz@xline){}; - \path (0,0) --(0,1) node(tkz@yline){}; - } -\iftkz@coord@noxdraw\else\draw[arrow coord style,/tkzprcoord/.cd,#1] (#2)--(#2 |- tkz@xline);\fi -\iftkz@coord@noydraw\else\draw[arrow coord style,/tkzprcoord/.cd,#1] (#2)--(#2 -| tkz@yline);\fi -\ifx\tkzutil@empty\tkz@xlabel -\else -\path (#2)--(#2 |- tkz@xline) - node[xcoord style] {\tkz@xlabel}; -\fi -\ifx\tkzutil@empty\tkz@ylabel -\else - \path (#2)--(#2 -| tkz@yline) - node[ycoord style] {\tkz@ylabel}; -\fi -\endgroup -} -\let\tkzShowPointCoord\tkzPointShowCoord %<---------------------------------------------------------------------------> % Coordonnées d'un point % result in #2x et #2y #1 est le point et on récupère ses coordonnées diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-polygons.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-polygons.tex index 19aeced046..d1f3692d05 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-polygons.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-polygons.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-polygons.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-polygons.tex} % bug in regular polygon side 2020/03/09 \makeatletter %<--------------------------------------------------------------------------–> @@ -40,15 +40,13 @@ %<--------------------- rectangle ---------------------------------–> % %<--------------------------------------------------------------------------–> - \def\tkzDefRectangle{\pgfutil@ifnextchar[{\tkz@DefRectangle}% {\tkz@DefRectangle[]}} \def\tkz@DefRectangle[#1](#2,#3){% \begingroup - \path[#1](#2) -| coordinate (tkzFirstPointResult) (#3) -| coordinate (tkzSecondPointResult) (#2); + \path[#1](#2) - coordinate (tkzFirstPointResult) (#3) - coordinate (tkzSecondPointResult) (#2); \endgroup } - %<-------------------------- gold rectangle -------------------------------–> % %<--------------------------------------------------------------------------–> diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-protractor.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-protractor.tex index e88b6efd35..ad0ff40681 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-protractor.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-protractor.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-protractor.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-protractor.tex} \makeatletter %<--------------------------------------------------------------------------–> % !!! idea from Y. Combe !!! @@ -43,14 +43,14 @@ \draw[fill=black] (0,0) circle (.08mm); \node[draw, circle, inner sep=.2mm] (a) at (0,0) {}; \foreach \x in {0, 90, ..., 360}{% - \draw[very thin, gray!40] (a) -- (\x:4cm);} + \draw[very thin, gray!40] (a) -- (\x:4cm);} \foreach \x in {0,...,359} {\draw (\x:3.8cm) -- (\x:4cm);} -\foreach \x in {0,5,...,355} {\draw (\x:3.725cm) -- (\x:4cm);} +\foreach \x in {0,5,...,355} {\draw (\x:3.725cm) -- (\x:4cm);} \foreach \x in {0,10,...,350}{% \node[rotate=(\x-90)] at (\x:3.6cm) {\tiny\x}; -} +} \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:2) arc(0:32:2); \draw [>=stealth',->, thick,black] (0:1.5) arc(0:32:1.5); } @@ -91,7 +91,7 @@ \def\tkzProtractor{\pgfutil@ifnextchar[{\tkz@Protractor}{\tkz@Protractor[]}} \def\tkz@Protractor[#1](#2,#3){% -\tkz@RappReturntrue +\tkz@RappReturnfalse \pgfqkeys{/protractor}{#1} \tkz@@extractxy{#2} \global\tkz@ax\pgf@x diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-sectors.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-sectors.tex index da68ae7404..c21ec58fbb 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-sectors.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-sectors.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-sectors.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-sectors.tex} \makeatletter %<----------------------- Sectors ------------------------------–> \gdef\tkz@nums{0} diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-show.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-show.tex index d10caa8f48..7c4bb47903 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-show.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-show.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-show.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-show.tex} \makeatletter %<--------------------------------------------------------------------------–> % finding specific points in a triangle diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-triangles.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-triangles.tex index 98c9ec3f2d..49be3da866 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-triangles.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-obj-eu-triangles.tex @@ -10,16 +10,16 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-triangles.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-triangles.tex} \makeatletter %<--------------------------------------------------------------------------–> % Triangle Equilateral %<--------------------------------------------------------------------------–> \def\tkzDefEquilateral(#1,#2){ \begingroup -\tkzDefMidPoint(#1,#2) + %\tkzDefMidPoint(#1,#2) \tkzURotateAngle(#1,60)(#2) \endgroup } @@ -34,22 +34,16 @@ \endgroup } %<--------------------------------------------------------------------------–> -\def\tkzDefIsoscelesRightTriangle{\pgfutil@ifnextchar[{\tkz@DefIsoscelesRightTriangle}{% - \tkz@DefIsoscelesRightTriangle[]}} - -\def\tkz@DefIsoscelesRightTriangle[#1](#2,#3){% +\def\tkzDefIsoscelesRightTriangle(#1,#2){% \begingroup - \tkzURotateAngle(#2,45)(#3) + \tkzURotateAngle(#1,45)(#2) \pgfnodealias{tkz@a}{tkzPointResult} - \tkzUHomo(#2,\tkzSqrTwobyTwo)(tkz@a) - \tkzDrawPolygon[#1](#2,#3,tkzPointResult) + \tkzUHomo(#1,\tkzSqrTwobyTwo)(tkz@a) \endgroup } %<--------------------------------------------------------------------------–> % Triangle OneTwo %<--------------------------------------------------------------------------–> - - \def\tkzDefTwoOne(#1,#2){ \begingroup \iftkz@swap@tr @@ -59,6 +53,9 @@ \fi \endgroup } +%<--------------------------------------------------------------------------– +% Pythagore +%<--------------------------------------------------------------------------– \def\tkzDefPythagore(#1,#2){ \begingroup \iftkz@swap@tr @@ -68,6 +65,9 @@ \fi \endgroup } +%<--------------------------------------------------------------------------– +% School +%<--------------------------------------------------------------------------– \def\tkzDefSchoolTriangle(#1,#2){ \begingroup \iftkz@swap@tr @@ -83,44 +83,58 @@ \fi \endgroup } +%<--------------------------------------------------------------------------– +% Gold +%<--------------------------------------------------------------------------– \def\tkzDefGoldTriangle(#1,#2){ \begingroup - \iftkz@swap@tr - \tkzURotateAngle(#1,36)(#2) + \tkzDefPointWith[K=-\tkzInvPhi](#2,#1) \else - \tkzURotateAngle(#1,-36)(#2) + \tkzDefPointWith[K=\tkzInvPhi](#2,#1) \fi \endgroup } +%<--------------------------------------------------------------------------– +% +%<--------------------------------------------------------------------------– \def\tkzDefEuclideTriangle(#1,#2){ \begingroup - \tkzURotateAngle(#1,72)(#2) - \tkzUHomo(#1,\tkzPhi)(tkzPointResult) + \iftkz@swap@tr + \tkzURotateAngle(#1,36)(#2) + \else + \tkzURotateAngle(#1,-36)(#2) + \fi \endgroup } +%<--------------------------------------------------------------------------– +% +%<--------------------------------------------------------------------------– \def\tkzDefGoldenTriangle(#1,#2){ \begingroup - \iftkz@swap@tr - \tkzDefPointWith[K=-\tkzInvPhi](#2,#1) - \else - \tkzDefPointWith[K=\tkzInvPhi](#2,#1) - \fi + \tkzURotateAngle(#1,72)(#2) + \tkzUHomo(#1,\tkzPhi)(tkzPointResult) \endgroup } +%<--------------------------------------------------------------------------– +% +%<--------------------------------------------------------------------------– \def\tkzDefCheopsTriangle(#1,#2){ \begingroup \tkzDefMidPoint(#1,#2) \tkzDefPointWith[K=-\tkzSqrtPhi](tkzPointResult,#1) \endgroup } +%<--------------------------------------------------------------------------– +% +%<--------------------------------------------------------------------------– \def\tkzDefTwoAnglesTriangle(#1,#2){ \begingroup \tkzURotateAngle(#1,\tkz@alpha)(#2) - \pgfnodealias{tkz@pta}{tkzPointResult} + \pgfnodealias{tkz@a}{tkzPointResult} \tkzURotateAngle(#2,-\tkz@beta)(#1) - \pgfnodealias{tkz@ptb}{tkzPointResult} - \tkzInterLL(#1,tkz@pta)(#2,tkz@ptb) + \pgfnodealias{tkz@b}{tkzPointResult} + \tkzInterLL(#1,tkz@a)(#2,tkz@b) \endgroup } %<--------------------------------------------------------------------------–> @@ -128,13 +142,13 @@ %<--------------------------------------------------------------------------–> \def\tkz@numtr{0} -\pgfkeys{% - /deftriangle/.cd, +\pgfkeys{/deftriangle/.cd, equilateral/.code = \def\tkz@numtr{0}, half/.code = \def\tkz@numtr{1}, two one/.code = \def\tkz@numtr{1}, pythagore/.code = \def\tkz@numtr{2}, pythagoras/.code = \def\tkz@numtr{2}, + right/.code = \def\tkz@numtr{2}, egyptian/.code = \def\tkz@numtr{2}, school/.code = \def\tkz@numtr{3}, golden/.code = \def\tkz@numtr{4}, @@ -145,18 +159,17 @@ 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\tkz@beta{#2}}, isosceles right/.code = \def\tkz@numtr{9}, swap/.is if = tkz@swap@tr, swap/.default = true, swap = false, - equilateral + equilateral } \def\tkzDefTriangle{\pgfutil@ifnextchar[{\tkz@DefTriangle}{\tkz@DefTriangle[]}} \def\tkz@DefTriangle[#1](#2,#3){% -\begingroup -\pgfkeys{/deftriangle/.cd,equilateral} +\begingroup \pgfqkeys{/deftriangle}{#1} \ifcase\tkz@numtr% \tkzDefEquilateral(#2,#3) @@ -353,17 +366,14 @@ \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) - \tkzGetSecondPoint{\tkz@pttr@name\csname tkz@point2\endcsname} - \tkzInterLC[R](#4,tkz@c)(tkz@c,\tkz@rc) - \tkzGetSecondPoint{\tkz@pttr@name\csname tkz@point3\endcsname} - \tkzInterLC[R](#2,tkz@a)(tkz@a,\tkz@ra) + \tkzDefExCircle(#2,#3,#4) \tkzGetPoints{tkz@b}{tkz@hb} + \tkzDefExCircle(#3,#4,#2) \tkzGetPoints{tkz@c}{tkz@hc} + \tkzDefExCircle(#4,#2,#3) \tkzGetPoints{tkz@a}{tkz@ha} + \tkzInterLC[near](#3,tkz@b)(tkz@b,tkz@hb) + \tkzGetFirstPoint{\tkz@pttr@name\csname tkz@point2\endcsname} + \tkzInterLC[near](#4,tkz@c)(tkz@c,tkz@hc) + \tkzGetFirstPoint{\tkz@pttr@name\csname tkz@point3\endcsname} + \tkzInterLC[near](#2,tkz@a)(tkz@a,tkz@ha) \tkzGetFirstPoint{\tkz@pttr@name\csname tkz@point1\endcsname} \endgroup } diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-BB.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-BB.tex index a00317d77c..b6ac1c328d 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-BB.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-BB.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-obj-eu-BB.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-obj-eu-BB.tex} \makeatletter %<--------------------------------------------------------------------------–> \def\tkzShowBB{\pgfutil@ifnextchar[{\tkz@ShowBB}{\tkz@ShowBB[]}} diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-angles.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-angles.tex index 61b33defe1..b46cee1957 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-angles.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-angles.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-tools-angles.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-eu-angles.tex} \makeatletter %<--------------------------------------------------------------------------–> %<--------------------------------------------------------------------------–> diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-base.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-base.tex index a5a1bc3ed1..639a5ef21a 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-base.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-base.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-tools-eu-base.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-eu-base.tex} \makeatletter %<--------------------------------------------------------------------------–> \global\let\tkz@tmp@xa\tkz@init@xmin% modif 2016 diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-colors.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-colors.tex index 0b0b7fc910..b5ba3e673d 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-colors.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-colors.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-tools-eu-colors} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-eu-colors} \makeatletter %<------ Initialisation of the colors with tkzSetUpColors -----------------> diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-intersections.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-intersections.tex index 74d351e2e4..1c214a3150 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-intersections.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-intersections.tex @@ -13,9 +13,9 @@ % The Current Maintainer of this work is Alain Matthes. % utf8 encoding -\def\fileversion{4.04} -\def\filedate{2022/01/22} -\typeout{2022/01/22 4.04 tkz-tools-intersections.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-eu-intersections.tex} \makeatletter %<--------------------------------------------------------------------------–> % intersection de deux lignes @@ -25,37 +25,37 @@ } \def\tkz@InterLL(#1,#2)(#3,#4)#5{% -%\path (intersection of #1--#2 and #3--#4) coordinate(#5); +\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% - -\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); +% \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% +% +% \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))/(809.55841)}} +% \edef\tkz@deltaxxyy{\fpeval{((\tkz@cx*\tkz@dy)-(\tkz@cy*\tkz@dx))/(809.55841)}} +% \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); } @@ -74,8 +74,8 @@ \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@deltaxy{\fpeval{((\tkz@ax*\tkz@by)-(\tkz@ay*\tkz@bx))/(809.55841)}} +\edef\tkz@deltaxxyy{\fpeval{((\tkz@cx*\tkz@dy)-(\tkz@cy*\tkz@dx))/(809.55841)}} \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)}} @@ -112,7 +112,7 @@ % c -= 2 * (sc.x * p1.x + sc.y * p1.y + sc.z * p1.z); % c -= r * r; % bb4ac = b * b - 4 * a * c; -% if (ABS(a) < EPS || bb4ac < 0) { +% if (ABS(a) < EPS bb4ac < 0) { % *mu1 = 0; % *mu2 = 0; % return(FALSE); @@ -125,14 +125,16 @@ % } %<---------- test ------------------------------------------------------–> \def\tkzTestInterLC(#1,#2)(#3,#4){% +\begingroup \tkz@Projection(#1,#2)(#3){tkz@pth}% distance centre à la ligne \tkz@@CalcLength(#3,tkz@pth){tkz@mathLen}% \tkz@@CalcLength(#3,#4){tkzLengthResult}%calcul du rayon \ifdim\tkz@mathLen pt>\tkzLengthResult pt\relax% -\tkzFlagLCfalse +\global\tkzFlagLCfalse \else -\tkzFlagLCtrue +\global\tkzFlagLCtrue \fi +\endgroup } %<--------------------------------------------------------------------------–> \def\tkz@numlc{0} @@ -141,9 +143,15 @@ R/.code = \def\tkz@numlc{1}, with nodes/.code = \def\tkz@numlc{2}, common/.store in = \tkz@common, - near/.store in = \tkz@near, common = {}, - near = {}, + near/.is if = tkz@near, + near/.default = true, + near = false, + next to/.store in = \tkz@nextto, + next to/.initial = {}, + next/.default = {}, + next to = {}, + next to/.value required, node } %<--------------------------------------------------------------------------–> @@ -164,34 +172,46 @@ \tkzInterLCWithNodes(#2,#3)(#4,#5){tkzFirstPointResult}% {tkzSecondPointResult}% \fi - \ifx\tkz@common\tkzutil@empty - \ifx\tkz@near\tkzutil@empty - \tkzFindAngle(tkzSecondPointResult,tkzFirstPointResult,#4) \tkzGetAngle{tkz@an} - \ifdim\tkz@an pt<180 pt\relax% - \else - \pgfnodealias{tkzPointTmp}{tkzSecondPointResult} - \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult} - \pgfnodealias{tkzFirstPointResult}{tkzPointTmp} - \fi - \else +\iftkz@near \tkz@@CalcLength(#2,tkzFirstPointResult){tkzLengthFirst} \tkz@@CalcLength(#2,tkzSecondPointResult){tkzLengthSecond} - \ifdim \tkzLengthFirst pt < \tkzLengthSecond pt\relax% - \else - \pgfnodealias{tkzPointTmp}{tkzSecondPointResult} - \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult} - \pgfnodealias{tkzFirstPointResult}{tkzPointTmp} - \fi - \fi - \else -\tkz@@CalcLength(\tkz@common,tkzSecondPointResult){tkz@mathLen} - \ifdim\tkz@mathLen pt<0.1pt\relax% - \else - \pgfnodealias{tkzPointTmp}{tkzSecondPointResult} - \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult} - \pgfnodealias{tkzFirstPointResult}{tkzPointTmp} - \fi - \fi + \ifdim \tkzLengthFirst pt < \tkzLengthSecond pt\relax% + \else + \pgfnodealias{tkzPointTmp}{tkzSecondPointResult} + \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult} + \pgfnodealias{tkzFirstPointResult}{tkzPointTmp} + \fi +\else + \ifx\tkz@common\tkzutil@empty + \ifx\tkz@nextto\tkzutil@empty + \tkzFindAngle(tkzSecondPointResult,tkzFirstPointResult,#4) + \tkzGetAngle{tkz@an} + \ifdim\tkz@an pt<180 pt\relax% + \else + \pgfnodealias{tkzPointTmp}{tkzSecondPointResult} + \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult} + \pgfnodealias{tkzFirstPointResult}{tkzPointTmp} + \fi + \else + \tkz@@CalcLength(\tkz@nextto,tkzFirstPointResult){tkzLengthFirst} + \tkz@@CalcLength(\tkz@nextto,tkzSecondPointResult){tkzLengthSecond} + \ifdim \tkzLengthFirst pt < \tkzLengthSecond pt\relax% + \else + \pgfnodealias{tkzPointTmp}{tkzSecondPointResult} + \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult} + \pgfnodealias{tkzFirstPointResult}{tkzPointTmp} + \fi + \fi + \else + \tkz@@CalcLength(\tkz@common,tkzSecondPointResult){tkz@mathLen} + \ifdim\tkz@mathLen pt<1pt\relax% + \else + \pgfnodealias{tkzPointTmp}{tkzSecondPointResult} + \pgfnodealias{tkzSecondPointResult}{tkzFirstPointResult} + \pgfnodealias{tkzFirstPointResult}{tkzPointTmp} + \fi + \fi +\fi%near \endpgfinterruptboundingbox \endgroup } @@ -351,17 +371,30 @@ % Intersection de deux cercles %<--------------------------------------------------------------------------–> %<---------- test ------------------------------------------------------–> -% test avec des nodes +% test avec des nodes R-r <= d <= R+r \def\tkzTestInterCC(#1,#2)(#3,#4){% +\begingroup \tkz@@CalcLength(#1,#3){tkz@mathLen}% distance entre les centres \tkz@@CalcLength(#2,#1){tkz@rA}%calcul du rayon \tkz@@CalcLength(#4,#3){tkz@rB}%calcul du rayon +% test if d <= rA + rB ? \edef\tkz@rS{\fpeval{\tkz@rA+\tkz@rB}} \ifdim\tkz@mathLen pt > \tkz@rS pt\relax% -\tkzFlagCCfalse +\global\tkzFlagCCfalse +\else +% now test if d>= rA - rB or rB-rA + \ifdim \tkz@rA pt > \tkz@rB pt\relax% + \edef\tkz@rD{\fpeval{\tkz@rA-\tkz@rB}} + \else + \edef\tkz@rD{\fpeval{\tkz@rB-\tkz@rA}} + \fi +\ifdim \tkz@rD pt > \tkz@mathLen pt\relax% + \global\tkzFlagCCfalse \else -\tkzFlagCCtrue +\global\tkzFlagCCtrue \fi +\fi +\endgroup } \def\tkz@numcc{0} @@ -433,7 +466,7 @@ \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); -\edef\tkz@hh{\fpeval{sqrt((\tkz@cx+\tkz@aa)*(\tkz@cx-\tkz@aa))}} +\edef\tkz@hh{\fpeval{sqrt(abs((\tkz@cx+\tkz@aa)*(\tkz@cx-\tkz@aa)))}}% abs !2022 \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}} diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-math.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-math.tex index 6723a41a35..e3c602abb3 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-math.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-math.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-tools-eu-math.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-eu-math.tex} \makeatletter %<--------------------------------------------------------------------------> % \tkzpointnormalised# @@ -23,7 +23,7 @@ % \tkzFindSlope % option xfp -% \tkzpointnormalised normalise un point A-->A' tq ||v(OA')=1|| +% \tkzpointnormalised normalise un point A-->A' tq v(OA')=1 % équivalent de \pgfpointnormalised avec fp % example % \tkzpointnormalised{% @@ -52,7 +52,7 @@ %<--------------------------------------------------------------------------> % \tkzCalcLength Distance entre deux points en pt ou en cm avec xfp % \veclen mais avec fp -% option cm le résultat est en cm sinon en pt +% option cm le résultat est en cm sinon en pt with cm=false %<--------------------------------------------------------------------------> \pgfkeys{tkzcalclen/.cd, cm/.is if = tkzLengthIncm, @@ -67,7 +67,7 @@ \tkz@@CalcLength(#2,#3){tkzLengthResult} \iftkzLengthIncm \pgfmathparse{\tkzLengthResult pt/1cm} - \edef\tkz@xfpMathLen{\fpeval{round(\pgfmathresult,5)}} + \edef\tkz@xfpMathLen{\fpeval{round(\pgfmathresult,6)}} \global\let\tkzLengthResult\tkz@xfpMathLen \fi \endgroup @@ -76,16 +76,14 @@ \pgfpointdiff{\pgfpointanchor{#1}{center}}% {\pgfpointanchor{#2}{center}}% \edef\tkz@xfpMathLen{\fpeval{sqrt((\pgf@x)^2+(\pgf@y)^2)}} -\edef\tkz@xfpMathLen{\fpeval{round(\tkz@xfpMathLen,5)}} +\edef\tkz@xfpMathLen{\fpeval{round(\tkz@xfpMathLen,6)}} \global\expandafter\edef\csname #3\endcsname{\tkz@xfpMathLen} } \def\tkz@@CalcLengthcm(#1,#2)#3{% \pgfpointdiff{\pgfpointanchor{#1}{center}}% {\pgfpointanchor{#2}{center}}% \edef\tkz@xfpMathLen{\fpeval{sqrt((\pgf@x)^2+(\pgf@y)^2)}} -\edef\tkz@xfpMathLen{\fpeval{round(\tkz@xfpMathLen,5)}} -\pgfmathparse{\tkz@xfpMathLen pt/1cm} -\edef\tkz@xfpMathLen{\fpeval{round(\pgfmathresult,5)}} +\edef\tkz@xfpMathLen{\fpeval{round(\tkz@xfpMathLen/28.45274,6)}} \global\expandafter\edef\csname #3\endcsname{\tkz@xfpMathLen} } %<--------------------------------------------------------------------------> @@ -120,9 +118,98 @@ \begingroup% \pgfmath@x##1pt\relax% \pgfmath@y##2pt\relax% - \edef\tkz@xfpMathLen{\fpeval{sqrt((\pgf@x)^2+(\pgf@y)^2)}} + \edef\tkz@xfpMathLen{\fpeval{sqrt((\pgf@x)^2+(\pgf@y)^2)}} \pgfmath@returnone\tkz@xfpMathLen pt% \endgroup% -}}} +}}}% +%<---------------------------------------------------------–> +\def\tkzSwapPoints(#1,#2){ + \pgfnodealias{tkzPointTmp}{#2} + \pgfnodealias{#2}{#1} + \pgfnodealias{#1}{tkzPointTmp}} +%<---------------------------------------------------------–> +\def\tkzPermute(#1,#2,#3){ +\tkzURotateWithNodes(#1,#3,#2)(#3) \tkzGetPoint{tkzpt} +\tkzURotateWithNodes(#1,#2,#3)(#2) \tkzGetPoint{#2} +\tkzSwapPoints(tkzpt,#3)} +%<---------------------------------------------------------–> +\def\tkzDotProduct(#1,#2,#3){% +\begingroup +\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% +\edef\tkz@@dotprod{\fpeval{round(abs((\tkz@bx-\tkz@ax)*(\tkz@cx-\tkz@ax)+(\tkz@by-\tkz@ay)*(\tkz@cy-\tkz@ay))/(28.45274*28.45274),5)}} +\global\let\tkzMathResult\tkz@@dotprod +\endgroup} +%<---------------------------------------------------------–> + \def\tkzGetResult#1{% + \global\expandafter\edef\csname #1\endcsname{\tkzMathResult}} +%<---------------------------------------------------------–> +% #1,#2 and #3 aligned +\def\tkzIsLinear(#1,#2,#3){% +\begingroup +\tkz@@CalcLengthcm(#1,#2){tkz@la} +\tkz@@CalcLengthcm(#1,#3){tkz@lb} +\tkzDotProduct(#1,#2,#3) +\edef\tkzResult{\fpeval{abs((\tkzMathResult)-(\tkz@la)*(\tkz@lb))}} +\ifdim \tkzResult pt < 0.01 pt\relax% +\global\tkzLineartrue +\else +\global\tkzLinearfalse +\fi +\endgroup +} +%<---------------------------------------------------------–> +% syntax : vec(#2,#1) ortho vec(#3,#1) +\def\tkzIsOrtho(#1,#2,#3){% +\begingroup +\tkzDotProduct(#1,#2,#3) +\edef\tkzResult{\fpeval{abs(\tkzMathResult)}} +\ifdim \tkzResult pt < 1 pt\relax% +\global\tkzOrthotrue +\else +\global\tkzOrthofalse +\fi +\endgroup +} +%<---------------------------------------------------------–> +%<---------------------------------------------------------–> +% \tkzPowerCircle(M)(O,A) --> OM^2-OA^2 +\def\tkzPowerCircle(#1)(#2,#3){% +\begingroup +\tkz@@CalcLengthcm(#2,#3){tkz@ra} +\tkz@@CalcLengthcm(#1,#2){tkz@om} +\gdef\tkzMathResult{\fpeval{round(\tkz@om*\tkz@om -\tkz@ra*\tkz@ra,5)}} +\endgroup +} +%<---------------------------------------------------------–> +\def\tkzDefRadicalAxis(#1,#2)(#3,#4){% +\begingroup +\tkz@@CalcLengthcm(#1,#3){tkz@da} +\tkz@@CalcLengthcm(#1,#2){tkz@ra} +\tkz@@CalcLengthcm(#3,#4){tkz@rb} +\edef\tkzMathResult{\fpeval{(\tkz@ra+\tkz@rb)}} +\ifdim \tkzMathResult pt < \tkz@da pt\relax% + \tkzURotateAngle(#1,60)(#3) \tkzGetPoint{tkz@aux} + \tkzInterCC(#1,#2)(tkz@aux,#1) \tkzGetPoints{tkz@pta}{tkz@ptb} + \tkzInterCC(#3,#4)(tkz@aux,#1) \tkzGetPoints{tkz@ptc}{tkz@ptd} + \tkzInterLL(tkz@pta,tkz@ptb)(tkz@ptc,tkz@ptd) \tkzGetPoint{tkz@pta} + \tkzUProjection(#1,#3)(tkz@pta) \tkzGetPoint{tkz@ptb} + \pgfnodealias{tkzSecondPointResult}{tkz@ptb} + \pgfnodealias{tkzFirstPointResult}{tkz@pta} +\else +\tkzInterCCR(#1,\tkz@ra)(#3,\tkz@rb){tkzFirstPointResult}{tkzSecondPointResult} +\fi +\endgroup +} \makeatother \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-modules.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-modules.tex index c3ba8ab736..2a3ddbbea3 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-modules.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-modules.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-tools-utilities.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-eu-utilities.tex} \makeatletter %<------------- % chargement des modules ----------------------------------> \def\tkz@obj@all{angles,arcs,compass,defcircles,deflines,defpoints,defpointsby,defpointsrnd,defpointswith,polygons,protractor,sectors,show,triangles}% @@ -29,12 +29,12 @@ \expandafter\ifx\csname tkz@library@\tkz@temp @loaded\endcsname\relax% \expandafter\global\expandafter\let\csname tkz@library@\tkz@temp @loaded\endcsname=\pgfutil@empty% \expandafter\edef\csname tkz@obj@#1@atcode\endcsname{\the\catcode`\@} - \expandafter\edef\csname tkz@obj@#1@barcode\endcsname{\the\catcode`\|} + \expandafter\edef\csname tkz@obj@#1@barcode\endcsname{\the\catcode`\ } \catcode`\@=11 - \catcode`\|=12 + \catcode`\ =12 \input tkz-obj-\tkz@temp.tex \catcode`\@=\csname tkz@obj@#1@atcode\endcsname - \catcode`\|=\csname tkz@obj@#1@barcode\endcsname + \catcode`\ =\csname tkz@obj@#1@barcode\endcsname \fi% }% }% @@ -54,12 +54,12 @@ \expandafter\ifx\csname tkz@library@\tkz@temp @loaded\endcsname\relax% \expandafter\global\expandafter\let\csname tkz@library@\tkz@temp @loaded\endcsname=\pgfutil@empty% \expandafter\edef\csname tkz@tool@#1@atcode\endcsname{\the\catcode`\@} - \expandafter\edef\csname tkz@tool@#1@barcode\endcsname{\the\catcode`\|} + \expandafter\edef\csname tkz@tool@#1@barcode\endcsname{\the\catcode`\ } \catcode`\@=11 - \catcode`\|=12 + \catcode`\ =12 \input tkz-tools-\tkz@temp.tex \catcode`\@=\csname tkz@tool@#1@atcode\endcsname - \catcode`\|=\csname tkz@tool@#1@barcode\endcsname + \catcode`\ =\csname tkz@tool@#1@barcode\endcsname \fi% }% }% diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-text.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-text.tex index 5bab4312ce..b8ff9c3901 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-text.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-text.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-tools-eu-text.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-eu-text.tex} \makeatletter %<--------------------------------------------------------------------------–> % tkzText @@ -50,7 +50,7 @@ \pgfkeys{/tkzlegend/.cd, line/.is if = tkz@legend@line, line/.default = true, - line = false, + line = false, /tkzlegend/.search also = {/tikz}, } \def\tkzLegend{\pgfutil@ifnextchar[{\tkz@Legend}{\tkz@Legend[]}} diff --git a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-utilities.tex b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-utilities.tex index 93b14350f9..6a9397171d 100644 --- a/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-utilities.tex +++ b/macros/latex/contrib/tkz/tkz-euclide/latex/tkz-tools-eu-utilities.tex @@ -10,9 +10,9 @@ % This work has the LPPL maintenance status “maintained”. % The Current Maintainer of this work is Alain Matthes. -\def\fileversion{4.051b} -\def\filedate{2022/02/25} -\typeout{2022/02/25 4.051b tkz-tools-eu-utilities.tex} +\def\fileversion{4.2c} +\def\filedate{2022/07/14} +\typeout{2022/07/14 4.2c tkz-tools-eu-utilities.tex} \makeatletter \pgfkeys{/tkzClip/.cd, space/.store in = {\tkz@CLI@space}, @@ -177,5 +177,60 @@ space = {}} \tkzURotateWithNodes(#1,#3,#2)(#3) \tkzGetPoint{tkzpt} \tkzURotateWithNodes(#1,#2,#3)(#2) \tkzGetPoint{#2} \tkzSwapPoints(tkzpt,#3)} +%<---------------------------------------------------------–> +\def\tkzDotProduct(#1,#2,#3){% +\begingroup +\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% +\edef\tkz@dotprod{\fpeval{round(((\tkz@bx-\tkz@ax)*(\tkz@cx-\tkz@ax)+(\tkz@by-\tkz@ay)*(\tkz@cy-\tkz@ay))/(809.55841),5)}} +\global\let\tkzMathResult\tkz@dotprod +\endgroup} +%<---------------------------------------------------------–> + \def\tkzGetResult#1{% + \global\expandafter\edef\csname #1\endcsname{\tkzMathResult}} +%<---------------------------------------------------------–> +% #1,#2 and #3 aligned +\def\tkzIsLinear(#1,#2,#3){% +\begingroup +\tkz@@CalcLengthcm(#1,#2){tkz@la} +\tkz@@CalcLengthcm(#1,#3){tkz@lb} +\tkzDotProduct(#1,#2,#3) +\edef\tkzMathResult{\fpeval{abs(abs(\tkzMathResult)-(\tkz@la)*(\tkz@lb))}} +\ifdim \tkzMathResult pt < 0.0001 pt\relax% +\global\tkzLineartrue +\else +\global\tkzLinearfalse +\fi +\endgroup +} +%<---------------------------------------------------------–> +% syntax : vec(#2,#1) ortho vec(#3,#1) +\def\tkzIsOrtho(#1,#2,#3){% +\begingroup +\tkzDotProduct(#1,#2,#3) +\edef\tkzMathResult{\fpeval{abs(\tkzMathResult)}} +\ifdim \tkzMathResult pt < 0.0001 pt\relax% +\global\tkzOrthotrue +\else +\global\tkzOrthofalse +\fi +\endgroup +} +%<---------------------------------------------------------–> + \def\tkzHelpGrid{% + \draw[help lines] (current bounding box.south west) grid + (current bounding box.north east); + } + \makeatother \endinput
\ No newline at end of file diff --git a/macros/latex/contrib/tkz/tkzexample/README.md b/macros/latex/contrib/tkz/tkzexample/README.md new file mode 100644 index 0000000000..f36e8d2ebf --- /dev/null +++ b/macros/latex/contrib/tkz/tkzexample/README.md @@ -0,0 +1,37 @@ +# tkzexample.sty — Package for the documentation of all tkz-* packages. + +Release 1.45c 2022/07/14 + +## Note + +This package is highly experimental and subject to change without notice. tkzexample is a package to present examples and their sources. It is essential if you want to compile the documentation of my packages like \tkzname{tkz-euclide}. I needed for my first packages to work in UTF8 and to present my sources in French. These sources had accents so I had to adapt the code used by \tkzimp{T.Tantau} to present the examples of \tkzname{pgfmanual}. There are still some imperfections so I invite you to improve this code if necessary + +## Licence + +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt. +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% This work has the LPPL maintenance status “maintained”. +% The Current Maintainer of this work is Alain Matthes. + +## Installation + +The package `tkzexample.sty` is present in `TeXLive` and `MiKTeX`, use the +package manager to install. + + +## How to use it + +\begin{tkzexample}[options] + your code +\end{tkzexample} + + + +## Author + +Alain Matthes, 5 rue de Valence, Paris 75005, al (dot) ma (at) mac (dot) com diff --git a/macros/latex/contrib/tkz/tkzexample/doc/latex/tkzexample.tex b/macros/latex/contrib/tkz/tkzexample/doc/latex/tkzexample.tex new file mode 100644 index 0000000000..4ca74a9286 --- /dev/null +++ b/macros/latex/contrib/tkz/tkzexample/doc/latex/tkzexample.tex @@ -0,0 +1,535 @@ +% !TEX TS-program = lualatex +% encoding : utf8 +% Documentation of tkzexample.sty +% Copyright 2022 Alain Matthes +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% This work has the LPPL maintenance status “maintained”. +% The Current Maintainer of this work is Alain Matthes. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% doc tkzexample.sty encodage : utf8 % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Créé par Alain Matthes le 21/03/2009 % +% Copyright (c) 2009, 2022 __AlterMundus__ All rights reserved.% +% version : 1.45c % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\PassOptionsToPackage{unicode}{hyperref} + +\documentclass[DIV = 14, + fontsize = 10, + index = totoc, + twoside, + cadre, + headings = small, + ]{tkz-doc} +%\usepackage{etoc} +\gdef\tkznameofpack{tkzexample.sty} +\gdef\tkzversionofpack{1.45c} +\gdef\tkzdateofpack{\today} +\gdef\tkznameofdoc{doc-tkzexample} +\gdef\tkzversionofdoc{1.45c} +\gdef\tkzdateofdoc{\today} +\gdef\tkzauthorofpack{Alain Matthes} +\gdef\tkzadressofauthor{} +\gdef\tkznamecollection{AlterMundus} +\gdef\tkzurlauthor{http://altermundus.fr} +\gdef\tkzengine{lualatex} +\gdef\tkzurlauthorcom{http://altermundus.fr} +\nameoffile{\tkznameofpack} +% -- Packages --------------------------------------------------- +\usepackage[dvipsnames,svgnames]{xcolor} +\usepackage{calc} +\usepackage{tkz-euclide,tkzexample,pgfornament} +\usetikzlibrary{backgrounds} +\usepackage[colorlinks,pdfencoding=auto, psdextra]{hyperref} +\hypersetup{ + linkcolor=Gray, + citecolor=Green, + filecolor=Mulberry, + urlcolor=NavyBlue, + menucolor=Gray, + runcolor=Mulberry, + linkbordercolor=Gray, + citebordercolor=Green, + filebordercolor=Mulberry, + urlbordercolor=NavyBlue, + menubordercolor=Gray, + runbordercolor=Mulberry, + pdfsubject={Euclidean Geometry}, + pdfauthor={\tkzauthorofpack}, + pdftitle={\tkznameofpack}, + pdfcreator={\tkzengine} +} + +\usepackage{fontspec} +\setmainfont{texgyrepagella}[ + Extension = .otf, + UprightFont = *-regular , + ItalicFont = *-italic , + BoldFont = *-bold , + BoldItalicFont = *-bolditalic +] +\setsansfont{texgyreheros}[ + Extension = .otf, + UprightFont = *-regular , + ItalicFont = *-italic , + BoldFont = *-bold , + BoldItalicFont = *-bolditalic , +] + +\setmonofont{lmmono10-regular.otf}[ + Numbers={Lining,SlashedZero}, + ItalicFont=lmmonoslant10-regular.otf, + BoldFont=lmmonolt10-bold.otf, + BoldItalicFont=lmmonolt10-boldoblique.otf, +] +\newfontfamily\ttcondensed{lmmonoltcond10-regular.otf} +%% (La)TeX font-related declarations: +\linespread{1.05} % Pagella needs more space between lines +%\usepackage{unicode-math} +\usepackage[math-style=literal,bold-style=literal]{unicode-math} +\usepackage{fourier-otf} +\let\rmfamily\ttfamily +\usepackage{multicol,lscape} +\usepackage[english]{babel} +\usepackage[normalem]{ulem} +\usepackage{multirow,multido,booktabs,cellspace} +\usepackage{shortvrb,fancyvrb,bookmark} + +\usetikzlibrary{snakes} + +%<-------------------------------------------------------------------------- +% settings styles +\tkzSetUpColors[background=white,text=black] +\AtBeginDocument{\MakeShortVerb{\|}} % link to shortvrb +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> + +\begin{document} +\parindent=0pt +\tkzTitleFrame{tkzexample\\Presentation tool} +\clearpage + + + \nameoffile{\tkznameofpack} +\defoffile{\tkzname{\tkznameofpack} is a package to present examples and their sources. It is essential if you want to compile the documentation of my packages like \tkzname{tkz-euclide}. I needed for my first packages to work in UTF8 and to present my sources in French. These sources had accents so I had to adapt the code used by \tkzimp{T.Tantau} to present the examples of \tkzname{pgfmanual}. There are still some imperfections so I invite you to improve this code if necessary}. + +\presentation + +\vfill + +Please report typos or any other comments to this documentation to: \href{mailto:al.ma@mac.com}{\textcolor{blue}{Alain Matthes}}. + +This file can be redistributed and/or modified under the terms of the \LaTeX{} +Project Public License Distributed from \href{http://www.ctan.org/}{CTAN}\ archives. + + + \clearpage + \tableofcontents + \clearpage +%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> + +\colorlet{graphicbackground}{blue!10!white}% +\colorlet{codebackground}{blue!20!lightgray!20}% +\colorlet{numbackground}{blue!50!black!50}% +\colorlet{numcolor}{white}% + +\section{First example : no options} +\tkzname{\tkznameofpack} is based on the code of \tkzname{codeexample} of \tkzimp{T.Tantau} . I wanted to be able to use the accents of the French language in the sources. + +How to use this environment? Without any options, the interpretation of a code and the source of this code are placed one above the other. + +To do this, simply place the source code in a \tkzname{tkzexample}. The colors of the different boxes show their sizes. + +The colors are obtained as follows: + +|\colorlet{graphicbackground}{blue!10!white}| \\ +|\colorlet{codebackground}{blue!20!lightgray!20}|\\ + +\begin{tkzexample}[] +\begin{minipage}{8cm} +\subsubsection{Minipage and accents without options} +This is a test for "minipage" and accents èçéà\&§. +The brackets |[]| even without options are mandatory. +\end{minipage} +\end{tkzexample} + +\vspace{12pt} + +|\begin{tkzexample}[]|\\ +|\begin{minipage}{8cm}|\\ +|\subsubsection{Minipage and accents without options}|\\ +|This is a test for "minipage" and accents èçéà\&§. |\\ +| The brackets |[]| even without options are mandatory.|\\ +|\end{minipage}|\\ +|\end{tkzexample}|\\ + +\vspace{12pt} +You may notice already a small default, |[]| square brackets are mandatory even without option. + +\section{Inversion of the boxes: option \tkzname{overhang}} + +\tkzname{overhang} allows to swap the source and the result. + +|\begin{tkzexample}[overhang]|\\ +|\begin{tikzpicture}|\\ +| ...|\\ +|\end{tkzexample}|\\ + + +\begin{tkzexample}[overhang] +\begin{tikzpicture} + \tkzDefPoint(0,0){O} + \tkzDefPoint(1,0){a0} + \tkzDrawSegment(O,a0) + \foreach \i [count=\j] in {0,...,16}{% + \tkzDefPointWith[orthogonal normed](a\i,O) + \tkzGetPoint{a\j} + \pgfmathsetmacro{\c}{5*\i} + \tkzDrawPolySeg[fill=teal!\c](a\i,a\j,O)} + \end{tikzpicture} +\end{tkzexample} + +\newpage +\section{Boxes with the same width: option \tkzname{vbox}} + +In order to present the code under the interpretation, I set the vbox option so that the interpretation and the source are in a box of the same maximum width. + +\vspace{12pt} +|\begin{tkzexample}[vbox]|\\ +| ...|\\ +|\end{tkzexample}|\\ +\vspace{12pt} +which gives + +\begin{tkzexample}[vbox] +\begin{tikzpicture}[scale=1] + \tikzset{new/.style={color=orange,line width=.2pt}} + \tkzDefPoint(0,0){A}\tkzDefPoint(6,0){D} + \tkzDefPoint(8,0){B}\tkzDefPoint(4,0){I} + \tkzDefLine[orthogonal=through D](A,D) + \tkzInterLC[R](D,tkzPointResult)(I,4) \tkzGetSecondPoint{C} + \tkzDefLine[orthogonal=through C](I,C) \tkzGetPoint{c} + \tkzDefLine[orthogonal=through B](A,B) \tkzGetPoint{b} + \tkzInterLL(C,c)(B,b) \tkzGetPoint{T} + \tkzInterLL(A,T)(C,D) \tkzGetPoint{P} + \tkzDrawArc(I,B)(A) + \tkzDrawSegments(A,B A,T C,D I,C) \tkzDrawSegment[new](I,C) + \tkzDrawLine[add = 1 and 0](C,T) \tkzDrawLine[add = 0 and 1](B,T) + \tkzMarkRightAngle(I,C,T) + \tkzDrawPoints(A,B,I,D,C,T) + \tkzLabelPoints(A,B,I,D) \tkzLabelPoints[above right](C,T) + \tkzMarkSegment[pos=.25,mark=s|](C,D) \tkzMarkSegment[pos=.75,mark=s|](C,D) +\end{tikzpicture} +\end{tkzexample} + +\newpage + +\section{Side by side: option \tkzname{latex}} + +You must indicate the width of the box assigned to the interpretation, this is done with the option \tkzname{latex}: + +\subsubsection{\tkzname{latex=7cm}} +\begin{tkzexample}[latex=7cm] +\begin{tikzpicture}[scale=.5] +\tkzInit[xmin=-6,ymin=-4,xmax=6,ymax=6] +\tkzClip +\tkzSetUpLine[thin,color=teal] +\tkzDefPoint(0,0){O} +\tkzDefPoint(132:5){A} +\tkzDefPoint(4,0){B} +\foreach \ang in {5,10,...,360}{% + \tkzDefPoint(\ang:4){M} + \tkzDefLine[mediator](A,M) + \tkzGetPoints{x}{y} + \tkzDrawLine[add= 3 and 3](x,y)} +\end{tikzpicture} +\end{tkzexample} + +|\begin{tkzexample}[latex=7cm]|\\ +|...| \\ +|\end{tkzexample}| \\ +\subsubsection{\tkzname{latex=8cm}} +\begin{tkzexample}[latex=8cm] +\begin{tikzpicture}[scale=.5] +\tkzInit[xmin=-6,ymin=-4,xmax=6,ymax=6] +\tkzClip +\tkzSetUpLine[thin,color=magenta] +\tkzDefPoint(0,0){O} +\tkzDefPoint(132:4){A} +\tkzDefPoint(5,0){B} +\foreach \ang in {5,10,...,360}{% + \tkzDefPoint(\ang:5){M} + \tkzDefLine[mediator](A,M) + \tkzGetPoints{x}{y} + \tkzDrawLine[add= 3 and 3](x,y)} +\end{tikzpicture} +\end{tkzexample} + +|\begin{tkzexample}[latex=8cm]|\\ +|...| \\ +|\end{tkzexample}| \\ +\newpage +\section{Side by side: option \tkzname{width}} +If the option \tkzname{latex= x cm} allows to reserve a box of width x cm for the code, the option \tkzname{width= x cm} allows to reserve a box of width x cm for the result. + +We leave a box of 8cm for the result or drawing and the rest of the line will contain a minipage of 8cm. As you can see a new section has been created and the code is contained in a 8cm box + + +\begin{tkzexample}[overhang,width=6cm,code=red!10] +\begin{tikzpicture}[scale=.4] +\tkzDefPoints{0/0/P,5/0/Q,3/2/I} +\tkzDefCircle[orthogonal from=P](Q,I) +\tkzGetFirstPoint{E} +\tkzDrawCircles(P,E Q,E) +\tkzInterCC[common=E](P,E)(Q,E) \tkzGetFirstPoint{F} +\tkzDefPointOnCircle[through = center P angle 80 point E] + \tkzGetPoint{A} +\tkzInterLC[common=E](A,E)(Q,E) \tkzGetFirstPoint{C} +\tkzInterLL(A,F)(C,Q) \tkzGetPoint{D} +\tkzDrawLines[add=0 and .75](P,Q) +\tkzDrawLines[add=0 and 2](A,E) +\tkzDrawSegments(P,E E,F F,C A,F C,D) +\tkzDrawPoints(P,Q,E,F,A,C,D) +\tkzLabelPoints(P,Q,F,C,D) +\tkzLabelPoints[above](E,A) +\end{tikzpicture} +\end{tkzexample} + +\vspace{24pt} +The options used to get this result are : +\vspace{12pt} + +|\begin{tkzexample}[overhang,width=6cm,code=red!30]|\\ +|...| \\ +|\end{tkzexample}| \\ + + +\newpage +\section{Option \tkzname{code} and option \tkzname{graphic}} + +This option is used to color the background of the code. + +\vspace{24pt} + +|\begin{tkzexample}[overhang,width=9cm,code=gray!20,graphic=red!15]|\\ +|...| \\ +|\end{tkzexample}| \\ + +\begin{tkzexample}[overhang,width=9cm,code=gray!20,graphic=red!15] +\begin{tikzpicture}[scale=1] + \tkzDefPoint(2,3){A} + \tkzDefShiftPoint[A](30:3){B} + \tkzDefShiftPoint[A](-30:3){C} + \tkzDrawPolygon(A,B,C) + \tkzDrawPoints(A,B,C) + \tkzLabelPoints[right](B,C) + \tkzLabelPoints[above left](A) + \tkzMarkSegments[mark=|](A,B A,C B,C) +\end{tikzpicture} +\end{tkzexample} + + +\newpage +\section{Option \tkzname{num}} + +You can number the lines of code. \tkzname{numcolor} and \tkzname{numbkgcolor} are used to define the style of the numbering. + +\subsection{Example 1} +\begin{tkzexample}[width=6cm,num,numcolor=red,numbkgcolor=white,code style=\ttfamily] +\begin{tikzpicture}[scale=0.3] + \tkzDefPoint(-4,0){I} + \tkzDefPoint(4,0){J} + \tkzDefPoint(0,0){O} + \tkzInterCC(J,O)(O,J) \tkzGetPoints{L}{H} + \tkzInterCC(I,O)(O,I) \tkzGetPoints{K}{G} + \tkzInterLL(I,K)(J,H) \tkzGetPoint{M} + \tkzInterLL(I,G)(J,L) \tkzGetPoint{N} + \tkzDefPointsBy[symmetry=center J](L,H){D,E} + \tkzDefPointsBy[symmetry=center I](G,K){C,F} + \begin{scope}[line style/.style = {very thin,teal}] + \tkzDrawLines[add=1.5 and 1.5](I,K I,G J,H J,L) + \tkzDrawLines[add=.5 and .5](I,J) + \tkzDrawCircles(O,I I,O J,O) + \tkzDrawArc[delta=0,orange](N,D)(C) + \tkzDrawArc[delta=0,orange](M,F)(E) + \tkzDrawArc[delta=0,orange](J,E)(D) + \tkzDrawArc[delta=0,orange](I,C)(F) + \end{scope} +\end{tikzpicture} +\end{tkzexample} +this is obtained with:\\ + +|\begin{tkzexample}[width=6cm,num,numcolor=red,numbkgcolor=white,code style=\ttfamily]| \\ +|...| \\ +|\end{tkzexample}| \\ + + + +\subsection{Example 2} +\begin{tkzexample}[latex=5cm,code=red!20,num,small,hsep=24pt] + \begin{tikzpicture}[scale=.25] + \tkzDefPoints{0/0/A,12/0/B,6/12*sind(60)/C} + \foreach \density in {20,30,...,240}{% + \tkzDrawPolygon[fill=teal!\density](A,B,C) + \pgfnodealias{X}{A} + \tkzDefPointWith[linear,K=.15](A,B) \tkzGetPoint{A} + \tkzDefPointWith[linear,K=.15](B,C) \tkzGetPoint{B} + \tkzDefPointWith[linear,K=.15](C,X) \tkzGetPoint{C}} + \end{tikzpicture} +\end{tkzexample} + +\vspace{12pt} +|\begin{tkzexample}[latex=5cm,code=red!20,num,small]|\\ +|...|\\ +|\end{tkzexample}|\\ + +\newpage +\vspace{12pt} + The global num option allows to have a global numbering of the lines with the next code: + +\vspace{12pt} +|\begin{tkzexample}[latex=7cm,global num,small,hsep=1cm]|\\ + +|...|\\ + +|\end{tkzexample}| +\begin{tkzexample}[latex=7cm,global num,small,hsep=24pt] +\begin{tikzpicture} + \tkzSetUpCompass[color=purple,line width=1pt] + \tkzDefPoints{0/1/A,5/2/B,3/4/C} + \tkzDefEquiPoints[from=C,dist=1,show, + /tkzcompass/delta=20](A,B) + \tkzGetPoints{E}{H} + \tkzDrawLines[color=blue](C,E C,H A,B) + \tkzDrawPoints[color=blue](A,B,C) + \tkzDrawPoints[color=red](E,H) + \tkzLabelPoints(E,H) + \tkzLabelPoints[color=blue](A,B,C) +\end{tikzpicture} +\end{tkzexample} + + + + + +% \pgfqkeys{/tkzexample}{% +% every tkzexample/.style={width=8cm+7pt} +% } +% +% | \pgfqkeys{/tkzexample}{%| +% | every tkzexample/.style={width=8cm+7pt}| +% | }| + +\newpage +\section{Size option for code fonts} + The different size options for fonts are : + + \begin{enumerate} + +\item very small + +\begin{tkzexample}[width=8cm,very small] +\begin{tikzpicture}[scale=.75] + \tkzDefPoints{0/0/A,6/0/B} + \tkzDefMidPoint(A,B) + \tkzGetPoint{I} + \tkzDefPointWith[orthogonal,K=-.75](B,A) + \tkzGetPoint{C} + \tkzInterLC(B,C)(B,I) + \tkzGetPoints{F}{D} + \tkzDuplicateSegment(B,F)(A,F) + \tkzGetPoint{E} + \tkzDrawArc[delta=10](F,E)(B) + \tkzInterLC(A,B)(A,E) + \tkzGetPoints{N}{M} + \tkzDrawArc[delta=10](A,M)(E) + \tkzDrawLines(A,B B,C A,F) + \tkzCompass(B,F) + \tkzDrawPoints(A,B,C,F,M,E) + \tkzLabelPoints(A,B,C,F,M) + \tkzLabelPoints[above](E) +\end{tikzpicture} +\end{tkzexample} + +\item small + +\begin{tkzexample}[width=6cm,small] +\begin{tikzpicture}[scale=1.2] + \tkzDefPoints{1/3/A,4/2/B} + \tkzDefPointWith[linear,K=0.5](A,B) + \tkzGetPoint{C} + \tkzDrawPoints[color=red](A,B,C) + \tkzDrawSegment(A,B) + \tkzLabelPoints[above right=3pt](A,B,C) +\end{tikzpicture} +\end{tkzexample} + + +\item normal + +\begin{tkzexample}[width=6cm,normal] +\begin{tikzpicture}[scale=.75] + \tikzset{new/.style={color=orange, + line width=.2pt}} + \tkzDefPoints{0/0/O_1,0/1/O_2,0/3/A} + \tkzDefPoint(15:3){F} + \tkzInterLC(F,O_1)(O_1,A) + \tkzGetSecondPoint{E} + \tkzDefLine[parallel=through O_2](E,F) + \tkzGetPoint{x} + \tkzInterLC(x,O_2)(O_2,A) \tkzGetPoints{D}{C} + \tkzDrawCircles(O_1,A O_2,A) + \tkzDrawSegments[new](O_1,A E,F C,D) + \tkzDrawSegments[purple](A,E A,F) + \tkzDrawPoints(A,O_1,O_2,E,F,C,D) + \tkzLabelPoints(A,O_1,O_2,E,F,C,D) +\end{tikzpicture} +\end{tkzexample}\end{enumerate} + + + +\newpage +\section{Option \tkzname{code only}} + + +|\begin{tkzexample}[small,code only]| \\ +| \begin{minipage}{9cm}| \\ +| \thispagestyle{empty}| \\ +| \noindent| \\ +| \begin{tikzpicture}| \\ +| \draw (0,0) node[circle,| \\ +| shade,| \\ +| ball color=Peach,minimum size=2cm]{};| \\ +| \draw[snake = expanding waves,| \\ +| color = Peach,| \\ +| line width = 3pt](1.2,0)--(4,0);| \\ +| \end{tikzpicture}| \\ +| \end{minipage}| \\ +|\end{tkzexample}| + +The result + +\begin{tkzexample}[small,code only] + \begin{minipage}{9cm} + \begin{tikzpicture} + \draw (0,0) node[circle, + shade, + ball color=Peach,minimum size=2cm]{}; + \draw[snake = expanding waves, + color = Peach, + line width = 3pt](1.2,0)--(4,0); + \end{tikzpicture} +\end{minipage} +\end{tkzexample} + +\end{document} + diff --git a/macros/latex/contrib/tkz/tkzexample/doc/tkzexample.pdf b/macros/latex/contrib/tkz/tkzexample/doc/tkzexample.pdf Binary files differnew file mode 100644 index 0000000000..7382e0f97e --- /dev/null +++ b/macros/latex/contrib/tkz/tkzexample/doc/tkzexample.pdf diff --git a/macros/latex/contrib/tkz/tkzexample/latex/tkzexample.sty b/macros/latex/contrib/tkz/tkzexample/latex/tkzexample.sty new file mode 100644 index 0000000000..fd25ef8a84 --- /dev/null +++ b/macros/latex/contrib/tkz/tkzexample/latex/tkzexample.sty @@ -0,0 +1,502 @@ +% Documentation of tkz-euclide +% Copyright 2022 Alain Matthes +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status “maintained”. +% +% The Current Maintainer of this work is Alain Matthes. + +% +% The author of the original code +% of the environment 'codeexample' is Till Tantau +% from the file pgfmanual-en-macros.tex +% (Copyright 2006 by Till Tantau) +% See the file doc/generic/pgf/licenses/LICENSE for more details. +% H I G H L Y E X P E R I M E N T A L +%<---------------------------------------------------------------------------> +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{tkzexample}[2022/07/14 v1.45c (code and graphic)] +\RequirePackage{calc,mdframed,fancyvrb} +\newif\iftkzcodesaved +\DeclareOption{saved}{\tkzcodesavedtrue} +\ProcessOptions\relax +%<---------------------------------------------------------------------------> +\colorlet{graphicbackground}{white} +\colorlet{codebackground}{white} +\colorlet{codeonlybackground}{white} +\colorlet{numbackground}{white} +\colorlet{textcodecolor}{black} +\colorlet{numcolor}{gray} +%<---------------------------------------------------------------------------> +\def\code@style{\small\ttfamily} +\makeatletter +\newcounter{code@cnt}% + +\ifx\scantokens\@undefined + \PackageError{tkzexample}{You need to use extended latex + (elatex) or (pdfelatex) to use this package}{} +\fi + +% Define \find@tkzexample such that it doesn't destroy catcodes: +\begingroup +\catcode`|=0 +\catcode`[= 1 +\catcode`]=2 +\catcode`\{=12 +\catcode `\}=12 +\catcode`\\=12 |gdef|find@tkzexample#1\end{tkzexample}[|endoftkzexample[#1]] +|endgroup + +\begingroup +\catcode`|=0 +\catcode`[= 1 +\catcode`]=2 +\catcode`\{=12 +\catcode `\}=12 +\catcode`\\=12 |gdef|find@tkzltxexample#1\end{tkzltxexample}[|endoftkzltxexample[#1]] +|endgroup + +% define \returntospace. +% +% It should define NEWLINE as {}, spaces and tabs as \space. +\begingroup +\catcode`\^=7 +\catcode`\^^M=13 +\catcode`\^^I=13 +\catcode`\ =13% +\gdef\returntospace{\catcode`\ =13\def {\space}\catcode`\^^I=13\def^^I{\space}\catcode`\^^M=13\def^^M{}}% +\endgroup + +\begingroup +\catcode`\%=13 +\catcode`\^^M=13 +\gdef\commenthandler{\catcode`\%=13\def%{\@gobble@till@return}} +\gdef\@gobble@till@return#1^^M{} +\gdef\@gobble@till@return@ignore#1^^M{\ignorespaces} +\gdef\typesetcomment{\catcode`\%=13\def%{\@typeset@till@return}} +\gdef\@typeset@till@return#1^^M{{\def%{\char`\%}\textsl{\char`\%#1}}\par} +\gdef\typesetcommentnum{\catcode`\%=13\def%{\@typeset@till@return@num}} +\gdef\@typeset@till@return@num#1^^M{{\def%{\char`\%}\textsl{\char`\%#1}} \@@par} +\endgroup + +\let\tkz@frameset\colorbox +\let\tkz@frameltxset\colorbox +\newwrite\fileexample +\newdimen\tkzexamplewidth +\newdimen\tkz@hsep +\tkz@hsep=0pt +\newif\ifcode@execute +\newif\ifcode@saved\code@savedfalse +\newif\ifnum@show \num@showfalse +\newif\ifcode@overhang +\newbox\tkzexamplebox +\newif\ifcode@vbox \code@vboxfalse +% +\pgfqkeys{/tkzexample}{% + execute code/.is if = code@execute, + show num/.is if = num@show, + overhang/.is if = code@overhang, + code only/.code = {\code@executefalse}, + width/.code = {\setlength\tkzexamplewidth{#1}}, + code/.code = {\colorlet{codebackground}{#1}}, + graphic/.code = {\colorlet{graphicbackground}{#1}}, + overhang/.code = {\code@overhangtrue}, + num/.code = {\num@showtrue\setcounter{code@cnt}{1}}, + numcolor/.code = {\colorlet{numcolor}{#1}}, + numbkgcolor/.code = {\colorlet{numbackground}{#1}}, + global num/.code = {\num@showtrue}, + code style/.code = {\def\code@style{#1}}, + normal/.code = {\def\code@size{\normalsize}}, + small/.code = {\def\code@size{\small}}, + very small/.code = {\def\code@size{\footnotesize}}, + right margin/.code = {\def\tkz@rightmargin{#1}}, + left margin/.code = {\def\tkz@leftmargin{#1}}, + inner left margin/.code = {\def\tkz@innerleftmargin{#1}}, + inner right margin/.code = {\def\tkz@innerrightmargin{#1}}, + inner top margin/.code = {\def\tkz@innertopmargin{#1}}, + inner bottom margin/.code = {\def\tkz@innerbottommargin{#1}}, + line frame width/.code = {\def\tkz@linewidth{#1}}, + frame code/.code = {\def\tkz@frameset{\fcolorbox{#1}}}, + frame tex/.code = {\def\tkz@frameltxset{\fcolorbox{#1}}}, + above skip/.code = {\def\tkz@above{#1}}, + below skip/.code = {\def\tkz@below{#1}}, + hsep/.code = {\setlength\tkz@hsep{#1}}, + pre/.code = {\def\code@pre{#1}}, + post/.code = {\def\code@post{#1}}, + latex/.code = {\setlength\tkzexamplewidth{#1}% + \def\code@preadd{\begin{minipage}{#1}}% + \def\code@postadd{\end{minipage}}}, + vbox/.code = {\code@vboxtrue + \def\code@preadd{\noindent + \vbox\bgroup + \setlength{\hsize}{\linewidth-6pt}% + }% + \def\code@postadd{\egroup}}, + every tkzexample/.style={width=6cm}, +}% +\def\code@size{}% +\def\code@pre{}% +\def\code@post{}% +\def\code@preadd{}% +\def\code@postadd{}% +\def\tkz@above{\par}% +\def\tkz@below{\par}% + +% execution du code +\def\tkz@result{% + \begin{minipage}[t]{\wd\tkzexamplebox}% + \hrule width0pt + \code@size + \box\tkzexamplebox + \leavevmode + \end{minipage}% +}% + +\newcommand\tkz@code[1]{% +\begin{minipage}[t]{\code@width}{% +\color{textcodecolor}% +\parskip=\z@ +\hrule width\z@ +\vskip-.25em +\let\do\@makeother +\dospecials +\frenchspacing +\code@style\code@size +\obeylines +\@vobeyspaces +\@tempswafalse +\ifnum@show + \typesetcommentnum + \def\par{% + \if@tempswa + \leavevmode\null\@@par\penalty\interlinepenalty + \everypar{\setlength\fboxsep{1pt}% + \noindent\parskip=0pt% + \llap{\colorbox{numbackground}{\textcolor{numcolor}{% + \footnotesize\number\value{code@cnt}}}\enspace}% + \stepcounter{code@cnt}}% + \else + \@tempswatrue + \ifhmode\@@par\penalty\interlinepenalty\fi% + \fi + }% + \everypar{\setlength\fboxsep{1pt}% + \noindent\parskip=0pt% + \llap{\colorbox{numbackground}{\textcolor{numcolor}{% + \footnotesize\number\value{code@cnt}}}\enspace}% + \stepcounter{code@cnt}% + }% +\else + \typesetcomment + \def\par{% + \if@tempswa + \leavevmode\null\@@par\penalty\interlinepenalty% + \else + \@tempswatrue + \ifhmode\@@par\penalty\interlinepenalty\fi% + \fi + }% +\fi +\obeylines +\ifcode@saved\input{#1}\else#1\fi% +}% end of content for the minipage +\end{minipage}% +}% + +\newcommand\tkz@codesplit[1]{% +\begin{mdframed}[linewidth = \tkz@linewidth, + leftmargin = \tkz@leftmargin, + rightmargin = \tkz@rightmargin, + backgroundcolor = codeonlybackground, + innerleftmargin = \tkz@innerleftmargin, + innertopmargin = \tkz@innertopmargin] +\begingroup +\color{textcodecolor}% +\parskip=\z@ +\hrule width0pt +\let\do\@makeother +\dospecials +\frenchspacing +\code@style\code@size +\obeylines +\@vobeyspaces +\@tempswafalse +\ifnum@show +\typesetcommentnum +\def\par{% + \if@tempswa + \leavevmode\null\@@par\penalty\interlinepenalty + \everypar{\setlength\fboxsep{1pt}% + \noindent\parskip=0pt% + \llap{\colorbox{numbackground}{\textcolor{numcolor}{% + \footnotesize\number\value{code@cnt}}}\enspace}% + \stepcounter{code@cnt}}% + \else + \@tempswatrue + \ifhmode\@@par\penalty\interlinepenalty\fi + \fi +}% +\everypar{\setlength\fboxsep{1pt}% + \noindent\parskip=0pt% + \llap{\colorbox{numbackground}{\textcolor{numcolor}{% + \footnotesize\number\value{code@cnt}}}\enspace}% + \stepcounter{code@cnt}% + }% +\else +\typesetcomment% +\def\par{% + \if@tempswa + \leavevmode\null\@@par\penalty\interlinepenalty% + \else + \@tempswatrue + \ifhmode\@@par\penalty\interlinepenalty\fi% + \fi +}% +\fi +\obeylines +\ifcode@saved\input{#1}\else #1\fi +\endgroup +\end{mdframed}% +}% + + +\def\tkzref{\arabic{section}-\arabic{subsection}-\arabic{subsubsection}}% +\def\tkzFileSavedPrefix{tkzFile}% +\def\tkz@File@Saved@Name{\tkzFileSavedPrefix-\tkzref}% + +\iftkzcodesaved +\def\tkzexample[#1]{% +\code@executetrue +\normalsize +\pgfkeys{/tkzexample/.cd, + right margin = 0pt, + left margin = 0pt, + line frame width = 0, + inner left margin = 0 pt, + inner right margin = 0 pt, + inner top margin = 6 pt, + inner bottom margin = 0 pt} +\pgfqkeys{/tkzexample}{every tkzexample,#1}% +\parindent0pt +\bgroup +\VerbatimEnvironment +\killienc\begin{VerbatimOut}{\tkz@File@Saved@Name.tex}}% +\def\endtkzexample{\end{VerbatimOut}% +\egroup +\ifcode@execute +\setbox\tkzexamplebox=\hbox{\input{\tkz@File@Saved@Name.tex}}% +\ifdim\wd\tkzexamplebox>\tkzexamplewidth% + \gdef\code@mid{\parskip2pt\par}% +% \hrule + %\def\code@mid{\hfill}% + \gdef\code@width{\linewidth}% +\else + \ifdim\tkz@hsep=0pt + \gdef\code@mid{\hfill}% + \else + \gdef\code@mid{\hskip\tkz@hsep}% + \fi + \gdef\code@width{\linewidth-1.5em-\tkz@hsep-\tkzexamplewidth}% + \fi + \par\noindent + \code@savedtrue + \ifcode@overhang + \tkz@frameset{codebackground}{\tkz@code{\tkz@File@Saved@Name.tex}}% + \else + \tkz@frameltxset{graphicbackground}{\tkz@result}% + \fi + \else% pas de code pas clair + \gdef\code@mid{\hfill}% + \gdef\code@width{\linewidth}% + \gdef\code@end{}% + \fi% fin pas de code + \code@mid + \ifcode@overhang\tkz@frameltxset{graphicbackground}{\tkz@result}% + \else + \tkz@frameset{codebackground}{\tkz@code{\tkz@File@Saved@Name.tex}}% + \fi +\tkz@below +}% +\else% end of code saved code et result ? +\def\tkzexample[#1]{% +\begingroup +\code@executetrue +\pgfkeys{/tkzexample/.cd, + right margin = 0pt, + left margin = 0pt, + line frame width = 0, + inner left margin = 0 pt, + inner right margin = 0 pt, + inner top margin = 6 pt, + inner bottom margin = 0 pt,} +\pgfqkeys{/tkzexample}{every tkzexample,#1}% +\parindent0pt +\begingroup +%\tkz@above +\let\do\@makeother +\dospecials +\obeylines +\@vobeyspaces +\catcode`\%=13 % +\catcode`\^^M=13 % +\find@tkzexample}% #1 est tout ce qui se trouve dans l'environnement +\def\endoftkzexample#1{% +\endgroup +\ifcode@execute % et \fcode@save ?? + \setbox\tkzexamplebox=\hbox{% + {\commenthandler + \protected@xdef\code@temp{#1}}% + \catcode`\^^M=9 % + {\ignorespaces\code@preadd\code@pre + \expandafter\scantokens\expandafter{\code@temp\ignorespaces}% + \code@post\code@postadd\ignorespaces}% + }% + \ifdim\wd\tkzexamplebox>\tkzexamplewidth + \def\code@mid{\par}% + \def\code@width{\linewidth-6pt}% + \else + \ifdim\tkz@hsep=0pt + \def\code@mid{\hfill}% + \else + \def\code@mid{\hskip\tkz@hsep}% + \fi% + \def\code@width{\linewidth-1.5em-\tkz@hsep-\tkzexamplewidth}% + \fi% + \par\noindent + \ifcode@overhang + \tkz@frameset{codebackground}{\tkz@code{#1}}% + \else + \tkz@frameltxset{graphicbackground}{\tkz@result}% + \fi +\else% pas de code execute + \def\code@mid{}% + \def\code@width{\linewidth-6pt}% + \def\code@end{}% + \fi% fin pas de code + \code@mid% + \ifcode@overhang% + \ifcode@execute\tkz@frameltxset{graphicbackground}{\tkz@result}\fi + \else% +\ifcode@execute\tkz@frameset{codebackground}{\tkz@code{#1}}\else + \par\vskip1em + \tkz@codesplit{#1} + %\tkz@frameset{codebackground}{\tkz@code{#1}}% +\fi + \fi + \tkz@below + \end{tkzexample}% +}% +\def\endtkzexample{\endgroup}% +\fi +%<---------------------------------------------------------------------------> +\pgfqkeys{/tkzltxexample}{% + width/.code = {\setlength\tkzltxexamplewidth{#1}}, + code/.code = {\colorlet{codeonlybackground}{#1}}, + show num/.is if = num@show, + num/.code = {\num@showtrue\setcounter{code@cnt}{1}}, + global num/.code = {\num@showtrue}, + numcolor/.code = {\colorlet{numcolor}{#1}}, + numbkgcolor/.code = {\colorlet{numbackground}{#1}}, + normal/.code = {\def\code@size{\normalsize}}, + small/.code = {\def\code@size{\small}}, + very small/.code = {\def\code@size{\footnotesize}}, + right margin/.code = {\def\tkz@rightmargin{#1}}, + left margin/.code = {\def\tkz@leftmargin{#1}}, + inner left margin/.code = {\def\tkz@innerleftmargin{#1}}, + inner right margin/.code = {\def\tkz@innerrightmargin{#1}}, + inner top margin/.code = {\def\tkz@innertopmargin{#1}}, + inner bottom margin/.code = {\def\tkz@innerbottommargin{#1}}, + line frame width/.code = {\def\tkz@linewidth{#1}}, + hsep/.code = {\def\tkz@hsep{#1}}, + typeset listing/.code = {#1}, + frame code/.code = {\def\tkz@frameset{\fcolorbox{#1}}}, + ignorespaces/.code = {\let\@gobble@till@return =% + \@gobble@till@return@ignore}, + leave comments/.code = {\def\code@catcode@hook{\catcode`\%=12}% + \let\commenthandler=\relax% + \let\typesetcomment=\relax}, + every tkzltxexample/.style = {width=8cm}, + vbox/.code = {\def\code@preadd{\noindent + \vbox\bgroup\setlength{\hsize}{\linewidth}}% + \def\code@postadd{\egroup}}% +} +\def\code@size{}% +% \def\code@pre{} +\def\code@post{}% +\def\code@pre{}% +\def\code@post{}% +\def\code@catcode@hook{}% + +\newdimen\tkzltxexamplewidth +\newbox\tkzltxexamplebox + +\def\tkzltxexample[#1]{% +\begingroup +\pgfkeys{/tkzltxexample/.cd, + right margin = 0pt, + left margin = 0pt, + line frame width = 0, + inner left margin = 0 pt, + inner right margin = 0 pt, + inner top margin = 6 pt, + inner bottom margin = 0 pt,} +\pgfqkeys{/tkzltxexample}{every tkzltxexample,#1}% +\parindent0pt +\begingroup% +\let\do\@makeother +\dospecials +\obeylines +\@vobeyspaces +\catcode`\%=13 % +\catcode`\^^M=13 % +\code@catcode@hook% +\relax% +\find@tkzltxexample} +\def\endoftkzltxexample#1{% +\endgroup% +\def\code@end{}% +\par\vskip1em +\tkz@codesplit{#1}% +\par +\code@post +\end{tkzltxexample}% +}% + +\def\endtkzltxexample{\endgroup} + + + +\newcommand\killienc{} +\@tempcnta128 +\@whilenum\@tempcnta<\@cclvi\do{% + \edef\killienc{\killienc\catcode\the\@tempcnta=12}% + \advance\@tempcnta\@ne} + +\def\tkz@ref{\arabic{section}-\arabic{subsection}-\arabic{subsubsection}} +\def\tkz@File@Saved@Name{\tkzFileSavedPrefix-\tkz@ref} +\pgfkeys{ +/tkzsavedcode/.cd, + prefix/.code = {\def\tkzFileSavedPrefix{#1}}} + +\newcommand{\tkzSavedCode}[1][]{% +\pgfkeys{% +tkzsavedcode/.cd, + prefix = tkzFile} +\pgfqkeys{/tkzsavedcode}{#1} +\renewenvironment{tkzexample}[1][]{% +\killienc\VerbatimOut{\tkz@File@Saved@Name.tex}}{% +\endVerbatimOut}} + +% \renewenvironment{tkzexample}[1][]{% +% \killienc \VerbatimOut{tkzeuc-\tkzref.tex}% +% }{% +% \endVerbatimOut +% } +% \fi +\endinput |