From d5adeaeb325c83b945dd89cac45b12a7410fd32d Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 24 Jan 2020 21:42:09 +0000 Subject: tkz-base (24jan20) git-svn-id: svn://tug.org/texlive/trunk@53530 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/tkz-base/tkz-base.cfg | 262 ++++---- Master/texmf-dist/tex/latex/tkz-base/tkz-base.sty | 240 +++---- .../tex/latex/tkz-base/tkz-lib-marks.tex | 108 ++++ .../texmf-dist/tex/latex/tkz-base/tkz-obj-axes.tex | 462 +++++++++++++ .../tex/latex/tkz-base/tkz-obj-grids.tex | 78 +++ .../tex/latex/tkz-base/tkz-obj-marks.tex | 122 ++-- .../tex/latex/tkz-base/tkz-obj-points.tex | 562 ++++++---------- .../texmf-dist/tex/latex/tkz-base/tkz-obj-rep.tex | 62 ++ .../tex/latex/tkz-base/tkz-obj-segments.tex | 142 ---- .../texmf-dist/tex/latex/tkz-base/tkz-tools-BB.tex | 63 ++ .../tex/latex/tkz-base/tkz-tools-arith.tex | 34 +- .../tex/latex/tkz-base/tkz-tools-base.tex | 719 ++------------------- .../tex/latex/tkz-base/tkz-tools-math.tex | 695 ++------------------ .../tex/latex/tkz-base/tkz-tools-misc.tex | 139 +--- .../tex/latex/tkz-base/tkz-tools-modules.tex | 60 ++ .../tex/latex/tkz-base/tkz-tools-obsolete.tex | 219 ------- .../tex/latex/tkz-base/tkz-tools-print.tex | 79 +++ .../tex/latex/tkz-base/tkz-tools-text.tex | 82 +++ .../tex/latex/tkz-base/tkz-tools-utilities.tex | 310 +++------ 19 files changed, 1685 insertions(+), 2753 deletions(-) create mode 100644 Master/texmf-dist/tex/latex/tkz-base/tkz-lib-marks.tex create mode 100644 Master/texmf-dist/tex/latex/tkz-base/tkz-obj-axes.tex create mode 100644 Master/texmf-dist/tex/latex/tkz-base/tkz-obj-grids.tex create mode 100644 Master/texmf-dist/tex/latex/tkz-base/tkz-obj-rep.tex delete mode 100644 Master/texmf-dist/tex/latex/tkz-base/tkz-obj-segments.tex create mode 100644 Master/texmf-dist/tex/latex/tkz-base/tkz-tools-BB.tex create mode 100644 Master/texmf-dist/tex/latex/tkz-base/tkz-tools-modules.tex delete mode 100644 Master/texmf-dist/tex/latex/tkz-base/tkz-tools-obsolete.tex create mode 100644 Master/texmf-dist/tex/latex/tkz-base/tkz-tools-print.tex create mode 100644 Master/texmf-dist/tex/latex/tkz-base/tkz-tools-text.tex (limited to 'Master/texmf-dist/tex/latex') diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-base.cfg b/Master/texmf-dist/tex/latex/tkz-base/tkz-base.cfg index 93df5aab278..743c14da90b 100644 --- a/Master/texmf-dist/tex/latex/tkz-base/tkz-base.cfg +++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-base.cfg @@ -1,131 +1,169 @@ +% tkz-base.cfg % Copyright 2011 by Alain Matthes % % This file may be distributed and/or modified % % 1. under the LaTeX Project Public License and/or % 2. under the GNU Public License. - -% original tkz-base.cfg -% % If you modify this original file, YOUR CHANGES WILL BE LOST when it is % updated. Instead, put your changes in the entire copy of tkz-base.cfg % and save the file in a directory part of your TEXINPUTS environment % variable. -\def\fileversion{1.16 d} -\def\filedate{2018/09/19} -\makeatletter -%<--------- axes cartesian system ---------------------------------------–> -\global\edef\tkz@init@color{\tkz@textcolor} -\global\def\tkz@init@lw{0.4 pt} -\global\def\tkz@init@tickwd{0.8 pt} -\global\def\tkz@init@ticka{2 pt} -\global\def\tkz@init@tickb{2 pt} -\global\def\tkz@init@xlabel{$x$} -\global\def\tkz@init@ylabel{$y$} -\global\def\tkz@init@tickb{2 pt} -\global\def\tkz@init@rightspace{.5} -\global\def\tkz@init@leftspace{0} -\global\def\tkz@init@upspace{.5} -\global\def\tkz@init@downspace{0} +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c tkz-base.cfg} +%<------ colors ---------------------------------------–> +\def\tkz@backgroundcolor{white} +\def\tkz@textcolor{black} +%<--------------------------------------------------------- +\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 pt} +\def\tkz@euc@pointpos{below right} +\def\tkz@euc@segmentcolor{\tkz@mainlinecolor} +\def\tkz@euc@circlecolor{\tkz@mainlinecolor} +%<-------------------------- line ---------------------------------------–> +\def\tkz@euc@linecolor{\tkz@mainlinecolor} +\def\tkz@euc@linewidth{0.6pt} +\def\tkz@euc@linestyle{solid} +\def\tkz@euc@lineleft{.2} +\def\tkz@euc@lineright{.2} +%<------ axes cartesian system ---------------------------------------–> +\def\tkz@init@color{\tkz@textcolor} +\def\tkz@init@lw{0.4 pt} +\def\tkz@init@tickwd{0.8 pt} +\def\tkz@init@ticka{2 pt} +\def\tkz@init@tickb{2 pt} +\def\tkz@init@xlabel{$x$} +\def\tkz@init@ylabel{$y$} +\def\tkz@init@tickb{2 pt} +\def\tkz@init@rightspace{.5} +\def\tkz@init@leftspace{0} +\def\tkz@init@upspace{.5} +\def\tkz@init@downspace{0} \global\let\tkzmathstyle\displaystyle -\global\def\tkz@legend@line@len{1cm} -%<------------------------------ styles ---------------------------------–> -\tikzset{xlabel style/.style={below=3 pt, - inner sep = 1pt, - outer sep = 0pt}} -\tikzset{xaxe style/.style ={>=latex,->}} -\tikzset{ylabel style/.style={left = 3 pt, - inner sep = 1pt, - outer sep = 0pt}} -\tikzset{yaxe style/.style ={>=latex,->}} +\def\tkz@legend@line@len{1cm} %<-------------------------- rep ---------------------------------------–> -\global\edef\tkz@sur@color{\tkz@mainlinecolor} -\global\edef\tkz@sur@colorlabel{\tkz@mainlinecolor} -\global\def\tkz@sur@lw{0.8 pt} -\global\def\tkz@sur@posxlabel{below=2pt} -\global\def\tkz@sur@posylabel{left=2pt} -\tikzset{rep style/.style={->,>=latex}} +\def\tkz@sur@color{\tkz@mainlinecolor} +\def\tkz@sur@colorlabel{\tkz@mainlinecolor} +\def\tkz@sur@lw{0.8 pt} +\def\tkz@sur@posxlabel{below=2pt} +\def\tkz@sur@posylabel{left=2pt} %<-------------------------- grid ---------------------------------------–> -\global\edef\tkz@grid@color{gray} -\global\def\tkz@grid@lw{0.4 pt} -\global\def\tkzCoeffSubColor{50} -\global\def\tkzCoeffSubLw{0.8} -\global\def\tkz@grid@xstep{0.2} -\global\def\tkz@grid@ystep{0.2} -%<-------------------------- line ---------------------------------------–> -\global\edef\tkz@euc@linecolor{\tkz@mainlinecolor} -\global\def\tkz@euc@linewidth{0.6pt} -\global\def\tkz@euc@linestyle{solid} -\global\def\tkz@euc@lineleft{.2} -\global\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}} - } -%<-------------------------- points -----------------------------------–> -\global\edef\tkz@euc@pointshape{circle} -\global\edef\tkz@euc@pointcolor{\tkz@mainlinecolor} -\global\edef\tkz@euc@labelcolor{\tkz@mainlinecolor} -\global\def\tkz@euc@pointsize{6} -\global\def\tkz@euc@pointpos{below right} -\global\edef\tkz@euc@segmentcolor{\tkz@mainlinecolor} -\global\edef\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*\pgflinewidth, - fill = \tkz@euc@pointcolor!50}} +\def\tkz@grid@color{gray} +\def\tkz@grid@lw{0.4 pt} +\def\tkzCoeffSubColor{50} +\def\tkzCoeffSubLw{0.8} +\def\tkz@grid@xstep{0.2} +\def\tkz@grid@ystep{0.2} +\def\tkz@init@gradsize{\textstyle} +\def\tkzRatioLineGrid{0.75} +\def\tkz@gd@sublw{0.4 pt}% size line sub grid %<------------------------- compass -----------------------------------–> -\global\edef\tkz@euc@compasscolor{\tkz@otherlinecolor} -\global\def\tkz@euc@compasswidth{0.4pt} -\global\def\tkz@euc@compassstyle{solid} -\tikzset{compass style/.style={color = \tkz@euc@compasscolor, - line width = \tkz@euc@compasswidth, - style = \tkz@euc@compassstyle}} +\def\tkz@euc@compasscolor{\tkz@otherlinecolor} +\def\tkz@euc@compasswidth{0.4pt} +\def\tkz@euc@compassstyle{solid} %<---------------------------- mark -----------------------------------–> -\global\edef\tkz@mk@color{\tkz@mainlinecolor} -\global\edef\tkz@mk@mark{*} -\global\edef\tkz@mk@size{3pt} -\global\edef\tkz@mk@fill{\tkz@otherlinecolor} -\tikzset{mark style/.style={mark=\tkz@mk@mark,mark size=\tkz@mk@size,mark options={color=\tkz@mk@color,fill=\tkz@mk@fill}}} +\def\tkz@mk@color{\tkz@mainlinecolor} +\def\tkz@mk@mark{*} +\def\tkz@mk@size{3pt} +\def\tkz@mk@fill{\tkz@otherlinecolor} +%<--------------------------------------------------------------------------–> +%<------------------------------ styles ---------------------------------–> +\tikzset{xlabel style/.style = {below = 3 pt, + inner sep = 1pt, + outer sep = 0pt} + } +\tikzset{ylabel style/.style = {left = 3 pt, + inner sep = 1pt, + outer sep = 0pt}} +\tikzset{xaxe style/.style = {> = latex, ->} +} +\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{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, + fill = \tkz@mk@fill + } + } +} %<---------------------- show coord -----------------------------------–> -\tikzset{arrow coord style/.style={dashed, - \tkz@euc@linecolor, - >=latex', - ->}} -\tikzset{xcoord style/.style={\tkz@euc@labelcolor, - font=\normalsize,text height=1ex, - inner sep = 0pt, - outer sep = 0pt, - fill=\tkz@fillcolor, - below=3pt}} -\tikzset{ycoord style/.style={\tkz@euc@labelcolor, - font=\normalsize,text height=1ex, - inner sep = 0pt, - outer sep = 0pt, - fill=\tkz@fillcolor, - left=3pt}} +\tikzset{arrow coord style/.style = {dashed, + \tkz@euc@linecolor, + > = latex', + ->} + } +\tikzset{xcoord style/.style = {\tkz@euc@labelcolor, + font = \normalsize, + text height = 1ex, + inner sep = 0pt, + outer sep = 0pt, + fill = \tkz@fillcolor, + below = 3pt} + } +\tikzset{ycoord style/.style = {\tkz@euc@labelcolor, + font = \normalsize, + text height = 1ex, + inner sep = 0pt, + outer sep = 0pt, + fill = \tkz@fillcolor, + left = 3pt} + } %<--------------------------- vector --------------------------------------–> -\tikzset{vector style/.style={>=latex,->}} - -%<------------------------- Cartesian system -----------------------------–> -% Default -% Geometry Euclidean with unity for x and y = 1cm ---> step=1 -% 0 ≤ x ≤ 10 -% 0 ≤ y ≤ 10 -\xdef\tkz@init@xorigine{0} -\xdef\tkz@init@yorigine{0} -\xdef\tkz@init@xstep{1} -\xdef\tkz@init@ystep{1} -\xdef\tkz@init@xmin{0} -\xdef\tkz@init@ymin{0} -\xdef\tkz@init@xmax{10} -\xdef\tkz@init@ymax{10} -\xdef\tkz@init@xdec{1} -\xdef\tkz@init@ydec{1} -%<--------------------------------------------------------------------------–> -\makeatother +\tikzset{vector style/.style={>=latex,->} +} \endinput \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-base.sty b/Master/texmf-dist/tex/latex/tkz-base/tkz-base.sty index 217b9a127ba..8c39f0dcd7f 100644 --- a/Master/texmf-dist/tex/latex/tkz-base/tkz-base.sty +++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-base.sty @@ -1,3 +1,4 @@ +% tkz-base.sty % this file % Copyright 2011 by Alain Matthes % % This file may be distributed and/or modified @@ -6,45 +7,44 @@ % 2. under the GNU Public License. % This work consists of the main source file interfaces.dtx % and the derived files - % tkz-base.sty % this file -% tkz-base.cfg -% tkz-obj-marks.tex -% tkz-obj-points.tex -% tkz-obj-segments.tex -% tkz-tools-arith.tex -% tkz-tools-base.tex -% tkz-tools-math.tex -% tkz-tools-misc.tex -% tkz-tools-obsolete.tex -% tkz-tools-utilities.tex %<--------------------------------------------------------------------------–> % Objet : Outils pour la création de graphiques géométriques %<--------------------------------------------------------------------------–> +\typeout{2020/01/23 3.01c tkz-base.sty} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{tkz-base}[2018/09/19 1.16 d tkz-base] +\ProvidesPackage{tkz-base}[2020/01/23 3.01c tkz-base] \ifx\e@alloc\@undefined \RequirePackage{etex} \fi \RequirePackage{tikz} -\usetikzlibrary{calc,% - arrows,% - plotmarks,% - positioning,% - shapes.misc,% - decorations,% - decorations.markings,% +\usetikzlibrary{% + angles, + arrows, + arrows.meta, + babel, + calc, + decorations, + decorations.markings, decorations.pathreplacing, - patterns} + intersections, + patterns, + plotmarks, + positioning, + quotes, + shapes.misc, + through + } % Pour les les labels sur les axes \@ifpackageloaded{numprint}{} {\RequirePackage[autolanguage]{numprint}} % -\RequirePackage{fp} -% pas de messages de la part de fp ! -\FPmessagesfalse% +\RequirePackage{xfp,fp} +%\FPmessagesfalse % pas de messages de la part de fp ! +%--------------------- \newdimen\tkzRadius \newdimen\tkzLength \newdimen\tkz@radi +%--------------------- tkz registres \newdimen\tkz@ax \newdimen\tkz@ay \newdimen\tkz@bx @@ -53,145 +53,67 @@ \newdimen\tkz@cy \newdimen\tkz@dx \newdimen\tkz@dy -\newif\iftkz@Y@noticks -\newif\iftkz@Y@nograd -\newif\iftkz@Y@orig -\newif\iftkz@Y@unit +% 2017 +\newdimen\tkz@tax +\newdimen\tkz@tay +\newdimen\tkz@tbx +\newdimen\tkz@tby +\newdimen\tkz@tcx +\newdimen\tkz@tcy +\newdimen\tkz@tdx +\newdimen\tkz@tdy +%--------------------- points +\newif\iftkz@polar\tkz@polarfalse +\newif\iftkz@pt@polar +\newif\iftkz@pt@show +\newif\iftkz@pt@noname +\newif\iftkz@coord@noxdraw +\newif\iftkz@coord@noydraw +\newif\iftkz@vec@normed +%--------------------- lines +\newif\iftkz@line@normed +%--------------------- tkz axis \newif\iftkz@X@noticks +\newif\iftkz@Y@noticks \newif\iftkz@X@nograd +\newif\iftkz@Y@nograd \newif\iftkz@X@orig +\newif\iftkz@Y@orig \newif\iftkz@X@unit -\global\def\tkz@mathresult{} -%<--------------------------- colors ---------------------------------------> -\def\tkz@backgroundcolor{white} -\def\tkz@textcolor{black} -\global\edef\tkz@fillcolor{\tkz@backgroundcolor} -\global\edef\tkz@mainlinecolor{\tkz@textcolor} -\global\edef\tkz@otherlinecolor{\tkz@mainlinecolor!50} -\tikzset{% - add/.style args={#1 and #2}{ - to path={% - ($(\tikztostart)!-#1!(\tikztotarget)$)--($(\tikztotarget)!-#2!(\tikztostart)$)% - \tikztonodes}} -} -%<--------- axes cartesian system ---------------------------------------–> -\global\edef\tkz@init@color{\tkz@textcolor} -\global\def\tkz@init@lw{0.4 pt} -\global\edef\tkz@init@gradsize{\textstyle} -\global\def\tkz@init@xlabel{$x$} -\global\def\tkz@init@ylabel{$y$} -\global\def\tkz@init@tickwd{0.8 pt} -\global\def\tkz@init@ticka{2 pt} -\global\def\tkz@init@tickb{2 pt} -\global\def\tkz@init@rightspace{.5} -\global\def\tkz@init@leftspace{0} -\global\def\tkz@init@upspace{.5} -\global\let\tkzmathstyle\displaystyle -\global\def\tkz@init@downspace{0} -%<------------------------------ styles ---------------------------------–> -\tikzset{xlabel style/.style={below=3 pt, - inner sep = 1pt, - outer sep = 0pt}} -\tikzset{xaxe style/.style ={>=latex,->}} -\tikzset{ylabel style/.style={left = 3 pt, - inner sep = 1pt, - outer sep = 0pt}} -\tikzset{yaxe style/.style ={>=latex,->}} -%<-------------------------- rep ---------------------------------------–> -\global\edef\tkz@sur@color{\tkz@mainlinecolor} -\global\edef\tkz@sur@colorlabel{\tkz@mainlinecolor} -\global\def\tkz@sur@lw{0.8 pt} -\global\def\tkz@sur@posxlabel{below=2pt} -\global\def\tkz@sur@posylabel{left=2pt} -\tikzset{rep style/.style={->,>=latex}} -%<-------------------------- grid ---------------------------------------–> -\global\edef\tkz@grid@color{gray} -\global\def\tkz@grid@lw{0.4 pt} -\global\def\tkzCoeffSubColor{50} -\global\def\tkzCoeffSubLw{0.8} -\global\def\tkz@grid@xstep{0.2} -\global\def\tkz@grid@ystep{0.2} -%<-------------------------- line ---------------------------------------–> -\global\edef\tkz@euc@linecolor{\tkz@mainlinecolor} -\global\def\tkz@euc@linewidth{0.6pt} -\global\def\tkz@euc@linestyle{solid} -\global\def\tkz@euc@lineleft{.2} -\global\def\tkz@euc@lineright{.2} -\global\def\tkz@legend@line@len{1cm} -\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}} - } -%<-------------------------- points -----------------------------------–> -\global\edef\tkz@euc@pointshape{circle} -\global\edef\tkz@euc@pointcolor{\tkz@mainlinecolor} -\global\edef\tkz@euc@labelcolor{\tkz@mainlinecolor} -\global\def\tkz@euc@pointsize{6} -\global\def\tkz@euc@pointpos{below right} -\global\edef\tkz@euc@segmentcolor{\tkz@mainlinecolor} -\global\edef\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*\pgflinewidth, - fill = \tkz@euc@pointcolor!50}} -%<------------------------- compass -----------------------------------–> -\global\edef\tkz@euc@compasscolor{\tkz@otherlinecolor} -\global\def\tkz@euc@compasswidth{0.4pt} -\global\def\tkz@euc@compassstyle{solid} -\tikzset{compass style/.style={color = \tkz@euc@compasscolor, - line width = \tkz@euc@compasswidth, - style = \tkz@euc@compassstyle}} -%<---------------------------- mark -----------------------------------–> -\global\edef\tkz@mk@color{\tkz@mainlinecolor} -\global\edef\tkz@mk@mark{*} -\global\edef\tkz@mk@size{3pt} -\global\edef\tkz@mk@fill{\tkz@otherlinecolor} -\tikzset{mark style/.style={mark=\tkz@mk@mark,mark size=\tkz@mk@size,mark options={color=\tkz@mk@color,fill=\tkz@mk@fill}}} -%<---------------------- show coord -----------------------------------–> -\tikzset{arrow coord style/.style={dashed, - \tkz@euc@linecolor, - >=latex', - ->}} -\tikzset{xcoord style/.style={\tkz@euc@labelcolor, - font=\normalsize,text height=1ex, - inner sep = 0pt, - outer sep = 0pt, - fill=\tkz@fillcolor, - below=3pt}} -\tikzset{ycoord style/.style={\tkz@euc@labelcolor, - font=\normalsize,text height=1ex, - inner sep = 0pt, - outer sep = 0pt, - fill=\tkz@fillcolor, - left=3pt}} -%<--------------------------- vector --------------------------------------–> -\tikzset{vector style/.style={>=latex,->}} -%<------------------------- Cartesian system -----------------------------–> -% Default -% Geometry Euclidean with unity for x and y = 1cm ---> step=1 -% 0 ≤ x ≤ 10 -% 0 ≤ y ≤ 10 -\xdef\tkz@init@xorigine{0} -\xdef\tkz@init@yorigine{0} -\xdef\tkz@init@xstep{1} -\xdef\tkz@init@ystep{1} -\xdef\tkz@init@xmin{0} -\xdef\tkz@init@ymin{0} -\xdef\tkz@init@xmax{10} -\xdef\tkz@init@ymax{10} -\xdef\tkz@init@xdec{1} -\xdef\tkz@init@ydec{1} - -\input{tkz-tools-utilities}% obligatoire -\input{tkz-tools-arith}% used only for axis -\input{tkz-tools-base} -\input{tkz-tools-misc} -\input{tkz-tools-math} -\input{tkz-obj-points} -\input{tkz-obj-segments} -\input{tkz-obj-marks} +\newif\iftkz@Y@unit +\newif\iftkz@np +\newif\iftkz@swap +\newif\iftkz@init@NO +\newif\iftkz@Rep@orig%--------------------- Rep +\newif\iftkzLengthIncm%--------------------- Math +\newif\iftkz@sop@show%--------------------- marks +\newif\iftkz@equi@show +\newif\iftkz@gd@sub% sub grid ?%--------------------- about grid +\newif\iftkz@node\tkz@nodefalse +\newif\iftkz@legend@line%--------------------- legend +\newif\iftkz@TestSubString +\newif\ifnormtkzcode@execute% german ? right angle +\newif\iftkz@sawp@sc%---------------------- semi circle +\newif\ifpgf@unknown % math arith +\newif\ifpgf@isaprime +\newcount\tkz@cntmk +\newif\iftkz@RappReturn % protractor +\newif\iftkz@RappFull +%--------------------- Init +\def\tkz@xgrad{1} +\def\tkz@ygrad{1} +\def\tkz@xa{0} +\def\tkz@xb{10} +\def\tkz@ya{0} +\def\tkz@yb{10} +%---------------------- +\def\tkz@mathresult{} +\InputIfFileExists{tkz-base.cfg}{% +\typeout{Local configuration file tkz-base.cfg found and used}}{% +\typeout{tkz-base.cfg not found} } +\input{tkz-tools-modules} +\input{tkz-lib-marks} +\usetkztool{base,utilities,math,text,BB,arith,print,misc} +\usetkzobj{axes,grids,marks,points,rep} \endinput diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-lib-marks.tex b/Master/texmf-dist/tex/latex/tkz-base/tkz-lib-marks.tex new file mode 100644 index 00000000000..0579d1ad254 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-lib-marks.tex @@ -0,0 +1,108 @@ +% tkz-lib-marks.tex +% Copyright 2011 by Alain Matthes +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c tkz-lib-symbols.tex} +\makeatletter +%<--------------------------------------------------------------------------–> +% Création des symboles +%<--------------------------------------------------------------------------–> +\def\tkz@undefined{none} +% double bar +\pgfdeclareplotmark{||} +{% + \pgfpathmoveto{\pgfqpoint{2\pgflinewidth}{\pgfplotmarksize}} + \pgfpathlineto{\pgfqpoint{2\pgflinewidth}{-\pgfplotmarksize}} + \pgfpathmoveto{\pgfqpoint{-2\pgflinewidth}{\pgfplotmarksize}} + \pgfpathlineto{\pgfqpoint{-2\pgflinewidth}{-\pgfplotmarksize}} + \pgfusepathqstroke +} +%triple bar +\pgfdeclareplotmark{|||} +{% + \pgfpathmoveto{\pgfqpoint{0 pt}{\pgfplotmarksize}} + \pgfpathlineto{\pgfqpoint{0 pt}{-\pgfplotmarksize}} + \pgfpathmoveto{\pgfqpoint{-3\pgflinewidth}{\pgfplotmarksize}} + \pgfpathlineto{\pgfqpoint{-3\pgflinewidth}{-\pgfplotmarksize}} + \pgfpathmoveto{\pgfqpoint{3\pgflinewidth}{\pgfplotmarksize}} + \pgfpathlineto{\pgfqpoint{3\pgflinewidth}{-\pgfplotmarksize}} + \pgfusepathqstroke +} +% An bar slant + +\pgfdeclareplotmark{s|} +{% + \pgfpathmoveto{\pgfqpoint{-.70710678\pgfplotmarksize}% + {-.70710678\pgfplotmarksize}} + \pgfpathlineto{\pgfqpoint{.70710678\pgfplotmarksize}% + {.70710678\pgfplotmarksize}} + \pgfusepathqstroke +} + +% An double bar slant + +\pgfdeclareplotmark{s||} +{% + \pgfpathmoveto{\pgfqpoint{-0.75\pgfplotmarksize}{-\pgfplotmarksize}} + \pgfpathlineto{\pgfqpoint{0.25\pgfplotmarksize}{\pgfplotmarksize}} + \pgfpathmoveto{\pgfqpoint{0\pgfplotmarksize}{-\pgfplotmarksize}} + \pgfpathlineto{\pgfqpoint{1\pgfplotmarksize}{\pgfplotmarksize}} + \pgfusepathqstroke +} + +% z +\pgfdeclareplotmark{z} +{% + \pgfpathmoveto{\pgfqpoint{0.75\pgfplotmarksize}{-\pgfplotmarksize}} + \pgfpathlineto{\pgfqpoint{-0.75\pgfplotmarksize}{-\pgfplotmarksize}} + \pgfpathlineto{\pgfqpoint{0.75\pgfplotmarksize}{\pgfplotmarksize}} + \pgfpathlineto{\pgfqpoint{-0.75\pgfplotmarksize}{\pgfplotmarksize}} + \pgfusepathqstroke +} +% s +\pgfdeclareplotmark{s} +{% + \pgfpathmoveto{\pgfqpoint{0pt}{0pt}} + \pgfpathcurveto + {\pgfpoint{0pt}{0pt}} + {\pgfpoint{-\pgfplotmarksize}{\pgfplotmarksize}} + {\pgfpoint{\pgfplotmarksize}{\pgfplotmarksize}} + \pgfpathmoveto{\pgfqpoint{0pt}{0pt}} + \pgfpathcurveto + {\pgfpoint{0pt}{0pt}} + {\pgfpoint{\pgfplotmarksize}{-\pgfplotmarksize}} + {\pgfpoint{-\pgfplotmarksize}{-\pgfplotmarksize}} + \pgfusepathqstroke +} +% infinity +\pgfdeclareplotmark{oo} +{% + \pgfpathmoveto{\pgfqpoint{0pt}{0pt}} + \pgfpathcurveto + {\pgfpoint{0pt}{0pt}} + {\pgfpoint{.5\pgfplotmarksize}{1\pgfplotmarksize}} + {\pgfpoint{\pgfplotmarksize}{0pt}} + \pgfpathmoveto{\pgfqpoint{0pt}{0pt}} + \pgfpathcurveto + {\pgfpoint{0pt}{0pt}} + {\pgfpoint{-.5\pgfplotmarksize}{1\pgfplotmarksize}} + {\pgfpoint{-\pgfplotmarksize}{0pt}} + \pgfpathmoveto{\pgfqpoint{0pt}{0pt}} + \pgfpathcurveto + {\pgfpoint{0pt}{0pt}} + {\pgfpoint{.5\pgfplotmarksize}{-1\pgfplotmarksize}} + {\pgfpoint{\pgfplotmarksize}{0pt}} + \pgfpathmoveto{\pgfqpoint{0pt}{0pt}} + \pgfpathcurveto + {\pgfpoint{0pt}{0pt}} + {\pgfpoint{-.5\pgfplotmarksize}{-1\pgfplotmarksize}} + {\pgfpoint{-\pgfplotmarksize}{0pt}} + \pgfusepathqstroke +} +\makeatother +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-axes.tex b/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-axes.tex new file mode 100644 index 00000000000..ce1ce98fdcb --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-axes.tex @@ -0,0 +1,462 @@ +% tkz-obj-axes.tex +% Copyright 2011 by Alain Matthes +% This file may be distributed and/or modified +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +% utf8 encoding +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c tkz-obj-axes.tex} + \newif\ifinteger + \makeatletter +\def\removedot#1.{#1} +\newcommand\tkzgetinteger[1]{\expandafter\tkz@getinteger#1.\@nil} +\def\tkz@getinteger#1.#2\@nil{% + \ifx\empty#2\empty + \integertrue + \else + \ifnum\removedot#2=0 + \integertrue + \else + \integerfalse + \fi + \fi +} +%<--------------------------------------------------------------------------–> +% some tools +%<--------------------------------------------------------------------------–> +\def\tkz@showgrad#1{% +\tkzgetinteger{#1} +\ifinteger\edef\tkz@result{\fpeval{trunc(#1,0)}}\else\edef\tkz@result{#1}\fi}% + +\def\tkz@Xresult{% +\tkz@showgrad{\tkz@xgrad}% + $\numprint{\tkz@result}$% +}% +%<--------------------------------------------------------------------------–> +\def\tkz@Yresult{% +\tkz@showgrad{\tkz@ygrad}% +$\numprint{\tkz@result}$ +}% +%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> +\def\tkz@Xshowgradresult#1{% +\iftkz@X@orig% + \tkz@Xresult% +\else% orig + \iftkz@init@NO% + \unless\ifx#1\tkz@posmin% + \tkz@Xresult\fi + \else% NO + \unless\ifx#1\x@tkzero% + \tkz@Xresult% + \fi%end of x@tkzero + \fi%end of NO +\fi%end of orig +}% +%<--------------------------------------------------------------------------–> +\def\tkz@Yshowgradresult#1{% +\iftkz@Y@orig% + \tkz@Yresult% +\else % orig +\iftkz@init@NO% + \unless\ifx#1\tkz@posmin% + \tkz@Yresult\fi + \else% NO + \unless\ifx#1\y@tkzero% + \tkz@Yresult% + \fi%end of x@tkzero + \fi%end of NO +\fi%end of orig +}% +%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> +\def\tkz@Xshowgrad#1{% +\iftkz@X@orig% + \tkzprintfrac% +\else% orig + \iftkz@init@NO% + \unless\ifx#1\tkz@posmin% + \tkzprintfrac\fi% + \else% NO + \unless\ifx#1\x@tkzero% + \tkzprintfrac% + \fi%end of x@tkzero + \fi%end of NO +\fi%end of orig +}% +%<--------------------------------------------------------------------------–> +\def\tkz@Yshowgrad#1{% +\iftkz@Y@orig% +\tkzprintfrac% +\else% orig + \iftkz@init@NO% + \unless\ifx\tkz@pos\tkz@posmin% + \tkzprintfrac\fi% + \else % NO + \unless\ifx\tkz@pos\y@tkzero% + \tkzprintfrac% + \fi%end of x@tkzero + \fi%end of NO +\fi%end of orig +}% + +%<--------------------------------------------------------------------------–> +% Setup axe +%<--------------------------------------------------------------------------–> +\pgfkeys{tkzaxis/.cd, + line width/.code = \xdef\tkz@sua@lw{#1}, + color/.code = \xdef\tkz@sua@color{#1}, + 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 +} + +\def\tkzSetUpAxis{\pgfutil@ifnextchar[{\tkz@SetUpAxis}{\tkz@SetUpAxis[]}} +\def\tkz@SetUpAxis[#1]{% +\begingroup +\pgfqkeys{/tkzaxis}{#1} +\global\let\tkz@init@lw\tkz@sua@lw +\global\let\tkz@init@gradsize\tkz@sua@gradsize +\global\let\tkz@init@color\tkz@sua@color +\global\let\tkz@init@tickwd\tkz@sua@tickwd +\global\let\tkz@init@ticka\tkz@sua@ticka +\global\let\tkz@init@tickb\tkz@sua@tickb +\endgroup +} +%<--------------------------------------------------------------------------–> +% tkzDrawX todo améliorer les unités +% sans doute à revoir loop from 0 to i then calcul dans la boucle de la position +% et de l'affichage +%<--------------------------------------------------------------------------–> +\pgfkeys{% + /tkzdrawX/.cd, + color/.store in = \tkz@X@color, + label/.store in = \tkz@X@label, + right space/.store in = \tkz@axe@rxspace, + left space/.store in = \tkz@axe@lxspace, + trig/.store in = \tkz@X@trig, + step/.code = {\edef\tkz@posnext{\fpeval{#1}}}, + color = \tkz@init@color, + label = \tkz@init@xlabel, + trig = 0, + step = \tkz@init@xstep, + right space = \tkz@init@rightspace, %??? + left space = \tkz@init@leftspace, + noticks/.is if = tkz@X@noticks, + noticks/.default = true, + noticks = false, + tickwd/.store in = \tkz@X@tickwd, + tickup/.store in = \tkz@X@tickup, + tickdn/.store in = \tkz@X@tickdn, + tickwd = \tkz@init@tickwd, + tickup = \tkz@init@ticka, + tickdn = \tkz@init@tickb, + /tkzdrawX/.search also={/tikz}, + } + +\def\tkzDrawX{\pgfutil@ifnextchar[{\tkz@DrawX}{\tkz@DrawX[]}} +\def\tkz@DrawX[#1]{ +\begingroup% +\pgfqkeys{/tkzdrawX}{#1} +\edef\tkz@posmax{\fpeval{trunc(\tkz@xb,\tkz@init@xdec)}} +\edef\tkz@posmin{\fpeval{trunc(\tkz@xa,\tkz@init@xdec)}} +\edef\tkz@xbsup{\fpeval{\tkz@xb+\tkz@axe@rxspace}} +\edef\tkz@xainf{\fpeval{\tkz@xa-\tkz@axe@lxspace}} +\path (\tkz@xainf,0)--(\tkz@xbsup,0) node(tkz@xline){}; +\draw[xaxe style, + color = \tkz@X@color, + /tkzdrawX/.cd, #1] (\tkz@xainf,0)--(\tkz@xbsup,0) + node[ xlabel style, + /tkzdrawX/.cd, + #1]{\tkz@X@label}; + \iftkz@X@noticks + \else + \ifnum\tkz@X@trig=0 + \edef\tkz@posmax{\fpeval{trunc(\tkz@posmax,\tkz@init@xdec)}} + \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, + shift = {(\tkz@pos,0)}]% + (0pt,\tkz@X@tickup)--(0pt,-\tkz@X@tickdn); + } + \else + \edef\tkz@posmin{\fpeval{round(((\tkz@posmin+.5)/pi)*\tkz@X@trig,0)}} + \edef\tkz@posmax{\fpeval{round(((\tkz@posmax)/pi)*\tkz@X@trig,0)}} + \foreach \tkz@pos in {\tkz@posmin,...,\tkz@posmax}{% + \edef\tkz@pospi{\fpeval{(\tkz@pos*pi)/\tkz@X@trig}} + \draw[color = \tkz@X@color, + line width = \tkz@X@tickwd,% + shift = {(\tkz@pospi,0)}]% + (0pt,\tkz@X@tickup)--(0pt,-\tkz@X@tickdn); + }% end foreach + \fi + \fi +\endgroup +} +%<--------------------------------------------------------------------------–> +% tkzDrawY todo améliorer les unités +%<--------------------------------------------------------------------------–> +\pgfkeys{% + /tkzdrawY/.cd, + color/.store in = \tkz@Y@color, + label/.store in = \tkz@Y@label, + up space/.store in = \tkz@axe@uyspace, + down space/.store in = \tkz@axe@dyspace, + trig/.store in = \tkz@Y@trig, + step/.code = {\edef\tkz@posnext{\fpeval{#1}}}, + color = \tkz@init@color, + label = \tkz@init@ylabel, + trig = 0, + step = \tkz@init@ystep, + up space = \tkz@init@upspace, + down space = \tkz@init@downspace, + noticks/.is if = tkz@Y@noticks, + noticks/.default = true, + noticks = false, + tickwd/.store in = \tkz@Y@tickwd, + ticklt/.store in = \tkz@Y@ticklt, + tickrt/.store in = \tkz@Y@tickrt, + tickwd = \tkz@init@tickwd, + ticklt = \tkz@init@tickb, + tickrt = \tkz@init@ticka, + /tkzdrawY/.search also={/tikz}, + } + +\def\tkzDrawY{\pgfutil@ifnextchar[{\tkz@DrawY}{\tkz@DrawY[]}} +\def\tkz@DrawY[#1]{% +\begingroup +\pgfkeys{/tkzdrawY/.cd,step = \tkz@init@ystep} +\pgfqkeys{/tkzdrawY}{#1} +\edef\tkz@posmax{\fpeval{trunc(\tkz@yb,\tkz@init@ydec)}} +\edef\tkz@posmin{\fpeval{trunc(\tkz@ya,\tkz@init@ydec)}} +\edef\tkz@ybsup{\fpeval{\tkz@yb+\tkz@axe@uyspace}} +\edef\tkz@yainf{\fpeval{\tkz@ya-\tkz@axe@dyspace}} +\path (0,\tkz@yainf)--(0,\tkz@ybsup) node(tkz@yline){}; +\draw[color = \tkz@Y@color, + yaxe style,/tkzdrawY/.cd,#1] (0,\tkz@yainf)--(0,\tkz@ybsup) + node[ylabel style,/tkzdrawY/.cd,#1]{\tkz@Y@label}; + \iftkz@Y@noticks + \else + \ifnum\tkz@Y@trig=0 + \edef\tkz@posmax{\fpeval{trunc(\tkz@posmax,\tkz@init@ydec)}} + \edef\tkz@posnext{\fpeval{\tkz@posnext/\tkz@init@ystep+\tkz@posmin}} + \foreach \tkz@pos in {\tkz@posmin,\tkz@posnext,...,\tkz@posmax}{% + \draw[color = \tkz@Y@color, + line width = \tkz@Y@tickwd, + shift = {(0,\tkz@pos)}]% + (\tkz@Y@tickrt,0pt)--(-\tkz@Y@ticklt,0pt);} + \else + \edef\tkz@posmin{\fpeval{round(((\tkz@posmin+.5)/pi)*\tkz@Y@trig,0)}} + \edef\tkz@posmax{\fpeval{round(((\tkz@posmax)/pi)*\tkz@Y@trig,0)}} + \foreach \tkz@pos in {\tkz@posmin,...,\tkz@posmax}{% + \edef\tkz@pospi{\fpeval{(\tkz@pos*pi)/\tkz@Y@trig}} + \draw[color = \tkz@Y@color, + line width = \tkz@Y@tickwd,% + shift = {(0,\tkz@pospi)}]% + (\tkz@Y@tickrt,0pt)--(-\tkz@Y@ticklt,0pt); + }% end foreach + \fi + \fi +\endgroup} +%<---------------------------------------------------------------------------> +% tkzLabelX +%<---------------------------------------------------------------------------> +\pgfkeys{/tkzlabelX/.cd, + frac/.store in = \tkz@X@frac, + trig/.store in = \tkz@X@trig, + step/.store in = \tkz@posnext, + tickwd/.store in = \tkz@X@tickwd, + tickup/.store in = \tkz@X@tickup, + tickdn/.store in = \tkz@X@tickdn, + np off/.is if = tkz@np, + np off/.default = true, + np off = false, + orig/.is if = tkz@X@orig, + orig/.default = false, + orig = true, + frac = 0, + trig = 0, + step = \tkz@init@xstep, + tickwd = \tkz@init@tickwd, + tickup = \tkz@init@ticka, + tickdn = \tkz@init@tickb, + /tkzlabelX/.search also={/tikz}, + } +\def\tkzLabelX{\pgfutil@ifnextchar[{\tkz@LabelX}{\tkz@LabelX[]}} +\def\tkz@LabelX[#1]{% +\begingroup +\pgfkeys{/tkzlabelX/.cd,step = \tkz@init@xstep} +\pgfqkeys{/tkzlabelX}{#1} +\iftkz@np\let\numprint@saved\numprint % +\let\numprint\relax\fi % + +\edef\tkz@posmin{\fpeval{trunc(\tkz@xa,\tkz@init@xdec)}} +\edef\tkz@posmax{\fpeval{trunc(\tkz@xb,\tkz@init@xdec)}} +\edef\x@tkzero{\fpeval{trunc(0.0000000,\tkz@init@xdec)}} + +\ifnum\tkz@X@frac=0 % + \ifnum\tkz@X@trig=0 % affichage normal + \edef\tkz@posnext{\fpeval{\tkz@posnext/\tkz@init@xstep+\tkz@posmin}} + \foreach \tkz@pos in {\tkz@posmin,\tkz@posnext,...,\tkz@posmax}{% + \edef\tkz@pos{\fpeval{trunc(\tkz@pos,\tkz@init@xdec)}} + \edef\tkz@xgrad{\fpeval{\tkz@pos*\tkz@init@xstep+\tkz@init@xorigine}} + \edef\tkz@xgrad{\fpeval{trunc(\tkz@xgrad,\tkz@init@xdec)}} + \path[shift = {(\tkz@pos,0)}] (0pt,\tkz@X@tickup) -- (0pt,-\tkz@X@tickdn)% + node[ xlabel style,% + fill = \tkz@fillcolor, + /tkzlabelX/.cd,#1]{\tkz@Xshowgradresult{\tkz@pos}}; +}% + \else% trig > 0 + \edef\tkz@posmin{\fpeval{round(((\tkz@posmin+.5)/pi)*\tkz@X@trig,0)}} + \edef\tkz@posmax{\fpeval{(\tkz@posmax/pi)*\tkz@X@trig}} + \foreach \tkz@pos in {\tkz@posmin,...,\tkz@posmax}{% + \tkzPrintFracWithPi{\tkz@pos}{\tkz@X@trig} + \edef\tkz@pospi{\fpeval{(\tkz@pos*pi)/\tkz@X@trig}} + \path[shift = {(\tkz@pospi,0)}]% + (0pt,\tkz@X@tickup)--(0pt,-\tkz@X@tickdn)% + node[xlabel style, + text height = 8pt, + fill = \tkz@fillcolor, + /tkzlabelX/.cd,#1]{\tkz@Xshowgrad{\tkz@pos}};% + }% end foreach + \fi +\else% frac > 0 + \edef\tkz@posmin{\fpeval{round(\tkz@posmin,0)}} + \foreach \tkz@pos in {\tkz@posmin,...,\tkz@posmax}{% + \tkzPrintFrac{\tkz@pos}{\tkz@X@frac}% + \path[shift = {(\tkz@pos,0)}]% + (0pt,\tkz@X@tickup)--(0pt,-\tkz@X@tickdn)% + node[xlabel style,text height = 8pt,fill = \tkz@fillcolor, + /tkzlabelX/.cd,#1]{\tkz@Xshowgrad{\tkz@pos}}% + ;% + }% end foreach +\fi + \iftkz@np\let\numprint\numprint@saved \fi% +\endgroup +} +%<---------------------------------------------------------------------------> +% tkzLabelY +%<---------------------------------------------------------------------------> +\pgfkeys{/tkzlabelY/.cd, + frac/.store in = \tkz@Y@frac, + trig/.store in = \tkz@Y@trig, + step/.store in = \tkz@posnext, + tickwd/.store in = \tkz@Y@tickwd, + ticklt/.store in = \tkz@Y@ticklt, + tickrt/.store in = \tkz@Y@tickrt, + np off/.is if = tkz@np, + np off/.default = true, + np off = false, + orig/.is if = tkz@Y@orig, + orig/.default = false, + orig = true, + frac = 0, + trig = 0, + step = \tkz@init@ystep, + tickwd = \tkz@init@tickwd, + ticklt = \tkz@init@tickb, + tickrt = \tkz@init@ticka, + /tkzlabelY/.search also={/tikz} + } + \def\tkzLabelY{\pgfutil@ifnextchar[{\tkz@LabelY}{\tkz@LabelY[]}} +\def\tkz@LabelY[#1]{% +\begingroup +\pgfkeys{/tkzlabelY/.cd,step = \tkz@init@ystep} +\pgfqkeys{/tkzlabelY}{#1} +\iftkz@np\let\numprint@saved\numprint % +\let\numprint\relax\fi % +\edef\tkz@posmin{\fpeval{trunc(\tkz@ya,\tkz@init@ydec)}} +\edef\tkz@posmax{\fpeval{trunc(\tkz@yb,\tkz@init@ydec)}} +\edef\y@tkzero{\fpeval{trunc(0.0000000,\tkz@init@ydec)}} + +\ifnum\tkz@Y@frac=0 + \ifnum\tkz@Y@trig=0 % affichage normal + \edef\tkz@posnext{\fpeval{\tkz@posnext/\tkz@init@ystep+\tkz@posmin}} + \foreach \tkz@pos in {\tkz@posmin,\tkz@posnext,...,\tkz@posmax}{% + \edef\tkz@pos{\fpeval{trunc(\tkz@pos,\tkz@init@ydec)}} + \edef\tkz@ygrad{\fpeval{\tkz@pos*\tkz@init@ystep+\tkz@init@yorigine}} + \edef\tkz@ygrad{\fpeval{trunc(\tkz@ygrad,\tkz@init@ydec)}} + \path[shift = {(0,\tkz@pos)}]% + (\tkz@Y@tickrt,0pt)--(-\tkz@Y@ticklt,0pt)% + node[ylabel style, + fill = \tkz@fillcolor, + /tkzlabelY/.cd,#1]{\tkz@Yshowgradresult{\tkz@pos}}; +} + \else% trig > 0 + \edef\tkz@posmin{\fpeval{round(((\tkz@posmin+.5)/pi)*\tkz@Y@trig,0)}} + \edef\tkz@posmax{\fpeval{(\tkz@posmax/pi)*\tkz@Y@trig}} + \foreach \tkz@pos in {\tkz@posmin,...,\tkz@posmax}{% + \tkzPrintFracWithPi{\tkz@pos}{\tkz@Y@trig} + \edef\tkz@pospi{\fpeval{(\tkz@pos*pi)/\tkz@Y@trig}} + \path[shift = {(0,\tkz@pospi)}]% + (\tkz@Y@tickrt,0pt)--(-\tkz@Y@ticklt,0pt)% + node[ylabel style,text height = 8pt,fill = \tkz@fillcolor, + /tkzlabelY/.cd,#1]{\tkz@Yshowgrad{\tkz@pos}};% + }% end foreach + \fi +\else% frac > 0 +\edef\tkz@posmin{\fpeval{round(\tkz@posmin,0)}} + \foreach \tkz@pos in {\tkz@posmin,...,\tkz@posmax}{% + \tkzPrintFrac{\tkz@pos}{\tkz@Y@frac}% + \path[shift = {(0,\tkz@pos)}]% + (\tkz@Y@tickrt,0pt)--(-\tkz@Y@ticklt,0pt)% + node[ylabel style, + text height = 8pt, + fill = \tkz@fillcolor, + /tkzlabelY/.cd,#1]{\tkz@Yshowgrad{\tkz@pos}}% + ;% + }% end foreach +\fi + \iftkz@np\let\numprint\numprint@saved \fi% +\endgroup +} +%<--------------------------------------------------------------------------> +%<--------------------------------------------------------------------------–> +% tkzAxeX Draw + Label +%<--------------------------------------------------------------------------–> +\def\tkzAxeX{\pgfutil@ifnextchar[{\tkz@AxeX}{\tkz@AxeX[]}} +\def\tkz@AxeX[#1]{% +\begingroup + \tkzLabelX[#1] + \tkzDrawX[#1] +\endgroup +} +%<--------------------------------------------------------------------------–> +\def\tkzAxeY{\pgfutil@ifnextchar[{\tkz@AxeY}{\tkz@AxeY[]}} +\def\tkz@AxeY[#1]{% +\begingroup + \tkzDrawY[#1] + \tkzLabelY[#1] +\endgroup} +%<--------------------------------------------------------------------------> +\pgfkeys{/tkzAxeXY/.cd, + swap/.is if = tkz@swap, + swap/.default = true, + swap = false, + /tkzAxeXY/.search also={/tikz}, + /tkzAxeXY/.unknown/.code = {\let\searchname=\pgfkeyscurrentname + \pgfkeysalso{\searchname/.try=#1}} + } + +\def\tkzAxeXY{\pgfutil@ifnextchar[{\tkzAxe@XY}{\tkzAxe@XY[]}} +\def\tkzAxe@XY[#1]{% +\pgfqkeys{/tkzAxeXY}{#1} +\iftkz@swap +\tkzLabelX[#1]\tkzLabelY[#1]\tkzDrawX[#1]\tkzDrawY[#1] +\else +\tkzDrawX[#1]\tkzDrawY[#1]\tkzLabelX[#1]\tkzLabelY[#1] +\fi} +\def\tkzDrawXY{\pgfutil@ifnextchar[{\tkzDraw@XY}{\tkzDraw@XY[]}} +\def\tkzDraw@XY[#1]{\tkzDrawX[#1]\tkzDrawY[#1]} +\def\tkzLabelXY{\pgfutil@ifnextchar[{\tkzLabel@XY}{\tkzLabel@XY[]}} +\def\tkzLabel@XY[#1]{\tkzLabelX[#1]\tkzLabelY[#1]} + %<--------------------------------------------------------------------------–> +\makeatother +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-grids.tex b/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-grids.tex new file mode 100644 index 00000000000..f2bd6a5ffcd --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-grids.tex @@ -0,0 +1,78 @@ +% tkz-obj-grids.tex +% Copyright 2011 by Alain Matthes +% This file may be distributed and/or modified +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +% utf8 encoding +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c tkz-obj-grids.tex} +\makeatletter +%<--------------------------------------------------------------------------–> +% Setup Grid +%<--------------------------------------------------------------------------–> +\pgfkeys{/@tkzsugrid/.cd, + line width/.store in = \tkz@sug@lw, + color/.store in = \tkz@sug@color, + line width = \tkz@grid@lw, + color = \tkz@grid@color + } + +\def\tkzSetUpGrid{\pgfutil@ifnextchar[{\tkz@SetUpGrid}{\tkz@SetUpGrid[]}} +\def\tkz@SetUpGrid[#1]{% +\begingroup +\pgfqkeys{/@tkzsugrid}{#1} +\global\let\tkz@grid@lw\tkz@sug@lw +\global\let\tkz@grid@color\tkz@sug@color +\endgroup +} +%<--------------------------------------------------------------------------–> +% tkzGrid +%<--------------------------------------------------------------------------–> +\pgfkeys{/@tkzGrid/.cd, + color/.code = {\def\tkz@gd@color{#1}% + \edef\tkz@gd@subcolor{% + \tkz@gd@color!\tkzCoeffSubColor}}, + subxstep/.store in = {\tkz@gd@subxstep}, + subystep/.store in = {\tkz@gd@subystep}, + ratio/.store in = {\tkz@gd@ratio}, + line width/.code = {\edef\tkz@gd@lw{#1} + \edef\tkz@gd@sublw{\tkz@gd@ratio\tkz@gd@lw}}, + sub/.is if = tkz@gd@sub, + sub/.default = true , + sub = false, + color = \tkz@grid@color, + ratio = 0.75, + subxstep = \tkz@grid@xstep, + subystep = \tkz@grid@ystep, + line width = \tkz@grid@lw, + /@tkzGrid/.search also = {/tikz}, +} +%<--------------------------------------------------------------------------–> +\def\tkzGrid{\pgfutil@ifnextchar[{\tkz@Grid}{\tkz@Grid[]}} +\def\tkz@Grid[#1]{\@ifnextchar({\tkz@@Grid[#1]}% + {\tkz@@Grid[#1](\tkz@tmp@xa,\tkz@tmp@ya)(\tkz@tmp@xb,\tkz@tmp@yb)}} +\def\tkz@@Grid[#1](#2,#3)(#4,#5){% + \pgfqkeys{/@tkzGrid}{#1} + \begingroup + \edef\tkz@gxa{\fpeval{(#2-\tkz@init@xorigine)/\tkz@init@xstep}} + \edef\tkz@gxb{\fpeval{(#4-\tkz@init@xorigine)/\tkz@init@xstep}} + \edef\tkz@gya{\fpeval{(#3-\tkz@init@yorigine)/\tkz@init@ystep}} + \edef\tkz@gyb{\fpeval{(#5-\tkz@init@yorigine)/\tkz@init@ystep}} + \iftkz@gd@sub% + \edef\@subxstep{\fpeval{\tkz@gd@subxstep/\tkz@init@xstep}}% + \edef\@subystep{\fpeval{\tkz@gd@subystep/\tkz@init@ystep}}% + \draw [xstep = \@subxstep cm,% + ystep = \@subystep cm,% + color = \tkz@gd@subcolor,% + line width = \tkzRatioLineGrid]% + (\tkz@gxa,\tkz@gya) grid (\tkz@gxb,\tkz@gyb);% + \fi + \draw [color = \tkz@gd@color,% + line width = \tkz@gd@lw]% + (\tkz@gxa,\tkz@gya) grid (\tkz@gxb,\tkz@gyb);% + \endgroup +}% + %<--------------------------------------------------------------------------–> +\makeatother +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-marks.tex b/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-marks.tex index d4efff422ab..3eec108b22c 100644 --- a/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-marks.tex +++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-marks.tex @@ -1,27 +1,24 @@ +%tkz-obj-marks.tex % Copyright 2011 by Alain Matthes % % This file may be distributed and/or modified % % 1. under the LaTeX Project Public License and/or % 2. under the GNU Public License. - - -\def\fileversion{1.16 d} -\def\filedate{2018/09/19} - - +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c tkz-obj-marks.tex} +\makeatletter %<-------------------------------------------------------------------------–> % Setup Marks %<-------------------------------------------------------------------------–> %<--------------------------------------------------------------------------–> % DefSetOfPoints %<--------------------------------------------------------------------------–> -\newif\iftkz@sop@show -\newcount\tkz@cntmk -\pgfkeys{ - /tkzSoPt/.cd, - prefix/.code = {\global\edef\tkz@pref{#1}}, - /tkzSoPt/.unknown/.code = {\let\searchname=\pgfkeyscurrentname +\pgfkeys{/tkzSoPt/.cd, + prefix/.store in = \tkz@pref, + prefix = tkzPt, + /tkzSoPt/.unknown/.code = {\let\searchname=\pgfkeyscurrentname \pgfkeysalso{\searchname/.try=#1, /tikz/\searchname/.retry=#1}} } @@ -29,9 +26,6 @@ \tkz@SetOfPoints[]}} \def\tkz@SetOfPoints[#1]#2{% \begingroup -\pgfkeys{% -/tkzSoPt/.cd, -prefix=tkzPt} \pgfqkeys{/tkzSoPt}{#1} \tkz@cntmk1 % \edef\tkz@@cnt{\the\tkz@cntmk} @@ -39,53 +33,45 @@ prefix=tkzPt} \tkz@cntmk=\tkz@@cnt % \tkzDefPoint(\x,\y){\tkz@pref\the\tkz@cntmk} \advance\tkz@cntmk by1 % - \global\edef\tkz@@cnt{\the\tkz@cntmk} + \xdef\tkz@@cnt{\the\tkz@cntmk} }% -\endgroup}% +\endgroup +}% %<-------------------------------------------------------------------------–> -\pgfkeys{ - /tkzjoinmk/.cd, - prefix/.code = {\global\edef\tkz@pref{#1}}, - /tkzjoinmk/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}} +\pgfkeys{/tkzjoinmk/.cd, + prefix/.store in = \tkz@pref, + prefix=tkzPt, + /tkzjoinmk/.search also={/tikz} } \def\tkzJoinSetOfPoints{\pgfutil@ifnextchar[{\tkz@JoinSetOfPoints}{% \tkz@JoinSetOfPoints[]}} \def\tkz@JoinSetOfPoints[#1]{% \begingroup -\pgfkeys{% -/tkzjoinmk/.cd, -prefix=tkzPt} -\pgfqkeys{/tkzjoinmk}{#1} -\pgfmathsetcount{\tkz@cntmk}{\tkz@@cnt-2} -\edef\tkz@@cnt{\the\tkz@cntmk} -\foreach \nb in {1,...,\tkz@@cnt}{% -\tkz@cntmk=\nb -\advance\tkz@cntmk by1 -\draw[line cap=round,/tkzjoinmk/.cd,#1] (\tkz@pref\nb)--(\tkz@pref\the\tkz@cntmk);} + \pgfqkeys{/tkzjoinmk}{#1} + \pgfmathsetcount{\tkz@cntmk}{\tkz@@cnt-2} + \edef\tkz@@cnt{\the\tkz@cntmk} + \foreach \nb in {1,...,\tkz@@cnt}{% + \tkz@cntmk=\nb + \advance\tkz@cntmk by1 + \draw[line cap=round,/tkzjoinmk/.cd,#1] + (\tkz@pref\nb) -- (\tkz@pref\the\tkz@cntmk);} \endgroup} %<-------------------------------------------------------------------------–> % ShowSetOfMark %<-------------------------------------------------------------------------–> -\pgfkeys{ -/tkzdrawmk/.cd, -prefix/.code = {\global\edef\tkz@pref{#1}}, -/tkzdrawmk/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}} +\pgfkeys{/tkzdrawmk/.cd, + prefix/.store in = \tkz@pref, + prefix=tkzPt, + /tkzdrawmk/.search also = {/tikz} } \def\tkzDrawSetOfPoints{\pgfutil@ifnextchar[{\tkz@DrawSetOfPoints}{ \tkz@DrawSetOfPoints[]}} \def\tkz@DrawSetOfPoints[#1]{% \begingroup -\pgfkeys{/tkzdrawmk/.cd, prefix=tkzPt} \pgfqkeys{/tkzdrawmk}{#1} \pgfmathsetcount{\tkz@cntmk}{\tkz@@cnt-1} -\foreach \nb in {1,...,\tkz@cntmk}{% -\tkzDrawMark[#1](\tkz@pref\nb)} +\foreach \nb in {1,...,\tkz@cntmk}{\tkzDrawMark[#1](\tkz@pref\nb)} \endgroup} - %<-------------------------------------------------------------------------–> % tkzmark %<-------------------------------------------------------------------------–> @@ -93,43 +79,39 @@ prefix/.code = {\global\edef\tkz@pref{#1}}, \def\tkz@DrawMark[#1](#2){% \draw plot[mark style,#1] coordinates {(#2)}; } -%<-------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> +%<---------------------------------------------------------–> +%<---------------------------------------------------------–> \def\tkzDrawMarks{\pgfutil@ifnextchar[{\tkz@DrawMarks}{\tkz@DrawMarks[]}} \def\tkz@DrawMarks[#1](#2){% -\foreach \point in {#2}{% -\draw plot[mark style,#1] coordinates {(\point)}; % StyleMark, + \foreach \point in {#2}{% + \draw plot[mark style,#1] coordinates {(\point)};% StyleMark, }} - -%<--------------------------------------------------------------------------–> +%<------------------------------------------------------------–> % Init pour mark -%<--------------------------------------------------------------------------–> -\pgfkeys{% -setupmk/.cd, -size/.code = {\global\edef\tkz@sum@mk@size{#1}}, -color/.code = {\global\edef\tkz@sum@mk@color{#1}}, -fill/.code = {\global\edef\tkz@sum@mk@fill{#1}}, -mark/.code = {\global\edef\tkz@sum@mk@mark{#1}} +%<------------------------------------------------------------–> +\pgfkeys{/setupmk/.cd, + size/.store in = \tkz@sum@mk@size, + color/.store in = \tkz@sum@mk@color, + fill/.store in = \tkz@sum@mk@fill, + mark/.store in = \tkz@sum@mk@mark, + mark = \tkz@mk@mark, + color = \tkz@mk@color, + fill = \tkz@mk@color!50, + size = \tkz@mk@size } - \def\tkzSetUpMark{\pgfutil@ifnextchar[{\tkzActivOff\tkz@SetUpMark}{% \tkzActivOff\tkz@SetUpMark[]}} \def\tkz@SetUpMark[#1]{% - \pgfkeys{% -/setupmk/.cd, -mark = \tkz@mk@mark, -color = \tkz@mk@color, -fill = \tkz@mk@color!50, -size = \tkz@mk@size} \pgfqkeys{/setupmk}{#1} -\tikzset{mark style/.style={inner sep = 0pt, - mark = \tkz@sum@mk@mark, - mark size = \tkz@sum@mk@size, - mark options = {color = \tkz@sum@mk@color, - fill = \tkz@sum@mk@fill}}} +\tikzset{mark style/.style={% + inner sep = 0pt, + mark = \tkz@sum@mk@mark, + mark size = \tkz@sum@mk@size, + mark options = {color = \tkz@sum@mk@color, + fill = \tkz@sum@mk@fill}}} }% - -%<--------------------------------------------------------------------------–> +\makeatother +%<--------------------------------------- ------------------–> \endinput \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-points.tex b/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-points.tex index 88c99c3a17e..39f2c391cc6 100644 --- a/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-points.tex +++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-points.tex @@ -1,25 +1,19 @@ +% tkz-obj-points.tex % Copyright 2011 by Alain Matthes % % This file may be distributed and/or modified % % 1. under the LaTeX Project Public License and/or % 2. under the GNU Public License. - - -\def\fileversion{1.16 d} -\def\filedate{2018/09/19} - - +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c tkz-obj-points.tex} %<--------------------------------------------------------------------------–> % init def point %<--------------------------------------------------------------------------–> -\newif\iftkz@polar\tkz@polarfalse -\newif\iftkz@pt@polar -\newif\iftkz@pt@show -\newif\iftkz@pt@noname - - +\makeatletter %<--------------------------------------------------------------------------–> +% define a new shape for the points \pgfdeclareshape{cross} {% \inheritsavedanchors[from=rectangle] % this is nearly a rectangle @@ -41,12 +35,12 @@ \inheritanchor[from=rectangle]{south east} \foregroundpath{ % store lower right in xa/ya and upper right in xb/yb - \southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y - \northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y - \pgfpathmoveto{\pgfqpoint{0 pt}{\pgf@ya}} - \pgfpathlineto{\pgfqpoint{0 pt}{\pgf@yb}} - \pgfpathmoveto{\pgfqpoint{\pgf@xa}{0 pt}} - \pgfpathlineto{\pgfqpoint{\pgf@xb}{0 pt}} + \southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y + \northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y + \pgfpathmoveto{\pgfqpoint{0 pt}{\pgf@ya}} + \pgfpathlineto{\pgfqpoint{0 pt}{\pgf@yb}} + \pgfpathmoveto{\pgfqpoint{\pgf@xa}{0 pt}} + \pgfpathlineto{\pgfqpoint{\pgf@xb}{0 pt}} } } %<--------------------------------------------------------------------------–> @@ -61,7 +55,7 @@ \iftkz@polar \tkz@getfrompolar#1\@nil \else - \tkz@getfromcart#1\@nil + \tkz@getfromcart#1\@nil \fi } \def\tkz@getseparator#1,#2\@nil{% @@ -71,22 +65,46 @@ \tkz@polarfalse \fi } -\def\tkz@getfrompolar#1:#2\@nil{ - \FPeval\tkz@a{(#1)} - \FPeval\tkz@r{(#2)} -\global\edef\tkz@polarrad{\tkz@r} -\global\edef\tkz@polarangle{\tkz@a} +\def\tkz@getfrompolar#1:#2\@nil{% +\edef\tkz@a{\fpeval{#1}} +\edef\tkz@r{\fpeval{#2}} +\xdef\tkz@polarrad{\tkz@r} +\xdef\tkz@polarangle{\tkz@a} } -\def\tkz@getfromcart#1,#2\@nil{ - \FPeval\tkz@x{(#1)} - \FPeval\tkz@y{(#2)} -\global\edef\tkz@absc{\tkz@x} -\global\edef\tkz@ord{\tkz@y} +\def\tkz@getfromcart#1,#2\@nil{% +\edef\tkz@x{\fpeval{#1}} +\edef\tkz@y{\fpeval{#2}} +\xdef\tkz@absc{\tkz@x} +\xdef\tkz@ord{\tkz@y} } %<--------------------------------------------------------------------------–> -% la macro defpoint les coordonnées cartésiennes ou polaires sont traitées -% afin de pouvoir adaptées avec les unités choisies +% options pour point definition %<--------------------------------------------------------------------------–> +\pgfkeys{/@tkzpt/.cd, + polar/.is if = tkz@pt@polar, + polar/.default = true, + polar = false +} +%<--------------------------------------------------------------------------–> +% tkz@ptStar +%<--------------------------------------------------------------------------–> +\def\tkz@ptStar[#1](#2,#3)#{% +\pgfkeys{/@tkzpt/.cd, polar = false} +\pgfqkeys{/@tkzpt}{#1} +\iftkz@pt@polar% + \edef\tkz@x{\fpeval{#3*cosd(#2)}} + \edef\tkz@y{\fpeval{#3*sind(#2)}} +\else + \edef\tkz@x{\fpeval{#2}} + \edef\tkz@y{\fpeval{#3}} +\fi +\edef\tkzpt@xa{\fpeval{(\tkz@x-\tkz@init@xorigine)/\tkz@init@xstep}} +\edef\tkzpt@ya{\fpeval{(\tkz@y-\tkz@init@yorigine)/\tkz@init@ystep}} +\tkz@node +} +%<--------------------------------------------------------------------------–> +% la macro defpoint les coordonnées cartésiennes ou polaires sont traitées +% afin de pouvoir être adaptées avec les unités choisies %<--------------------------------------------------------------------------–> \def\tkzDefPoint{\pgfutil@ifnextchar[{\tkzActivOff\tkz@DefPoint}{% \tkzActivOff\tkz@DefPoint[]}} @@ -94,426 +112,216 @@ \def\tkz@DefPoint[#1](#2)#{% \tkz@parsecoordinate{#2} \iftkz@polar - \tkz@ptStar[polar](\tkz@polarangle,\tkz@polarrad){tkz@coord@temp} - \else - \tkz@ptStar[](#2){tkz@coord@temp} - \fi -\tkz@DefPointEnd[#1]}% -\def\tkz@DefPointEnd[#1]#2{% - \coordinate[#1] (#2) at (tkz@coord@temp); -} + \tkz@ptStar[polar](\tkz@polarangle,\tkz@polarrad){tkz@coord@temp} +\else + \tkz@ptStar[](#2){tkz@coord@temp} +\fi +\tkz@DefPointEnd[#1] +}% +\def\tkz@DefPointEnd[#1]#2{\coordinate[#1] (#2) at (tkz@coord@temp);} %<--------------------------------------------------------------------------–> % tkzDefPoints %<--------------------------------------------------------------------------–> -\def\tkzDefPoints{\pgfutil@ifnextchar[{\tkz@DefPoints}{% - \tkz@DefPoints[]}} - +\def\tkzDefPoints{\pgfutil@ifnextchar[{\tkz@DefPoints}{\tkz@DefPoints[]}} \def\tkz@DefPoints[#1]#2{% -\begingroup - \foreach \ptx/\pty/\name in {#2}{\tkzDefPoint[#1](\ptx,\pty){\name}}% -\endgroup -} %<--------------------------------------------------------------------------–> -% Init pour Draw -%<--------------------------------------------------------------------------–> -\pgfkeys{% -setuppt/.cd, -size/.code = {\global\edef\tkz@pt@size{#1}}, -color/.code = {\global\edef\tkz@pt@color{#1}}, -fill/.code = {\global\edef\tkz@pt@fill{#1}}, -shape/.code = {\global\edef\tkz@pt@shape{#1}} -} + \begingroup + \def\tkz@parenthesis@for@err{(}% + \def\tkz@maybe@parenthesis{#2}% + \ifx\tkz@maybe@parenthesis\tkz@parenthesis@for@err + \PackageError{tkz-base}{Syntax error use {} instead of ()}{You need to use {} instead of ()}% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {\tkz@absorb@bad@arg}% + {\foreach \ptx/\pty/\name in {#2}{\tkzDefPoint[#1](\ptx,\pty){\name}}% + \endgroup}% +} +\def\tkz@absorb@bad@arg#1){\endgroup} +%<--------------------------------------------------------------------------–> +\def\tkz@node#1{\path[coordinate](\tkzpt@xa,\tkzpt@ya) coordinate(#1);} +% \def\tkz@drawnode#1{\path[coordinate](\tkzpt@xa,\tkzpt@ya) coordinate(#1); +% \tkz@DrawPt{#1} +% } %<--------------------------------------------------------------------------–> % tkzSetUpPoint définit la forme d'un point %<--------------------------------------------------------------------------–> +\pgfkeys{/@setuppt/.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, + /@setuppt/.search also = {/tikz}, + } \def\tkzSetUpPoint{\pgfutil@ifnextchar[{\tkzActivOff\tkz@SetUpPoint}{% \tkzActivOff\tkz@SetUpPoint[]}} - \def\tkz@SetUpPoint[#1]{% -\pgfkeys{% -/setuppt/.cd, -size = \tkz@euc@pointsize, -color = \tkz@euc@pointcolor, -fill = \tkz@euc@pointcolor!50, -shape = \tkz@euc@pointshape} -\pgfqkeys{/setuppt}{#1} +\pgfqkeys{/@setuppt}{#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*\pgflinewidth, - fill = \tkz@pt@fill}}}% -%<--------------------------------------------------------------------------–> + minimum size = \tkz@pt@size, + fill = \tkz@pt@fill + } + } + }% end setup %<--------------------------------------------------------------------------–> % Draw Point -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -%\tikzset{/drawpoint/size/.style={minimum size=#1*\pgflinewidth}} -\pgfkeys{/drawpoint/.cd, - size/.code = {\tikzset{point style/.append style={% - minimum size = #1*\pgflinewidth}}}, - color/.code = {\tikzset{point style/.append style={% - draw = #1}}}, - shape/.code = {\tikzset{point style/.append style={% - shape=#1}}}, - fill/.code = {\tikzset{point style/.append style={% - fill=#1}}} } - +%<--------------------------------------------------------------------------–> +\pgfkeys{/@drawpoint/.cd, + size/.code = {\tikzset{point style/.append style={minimum size = #1}}}, + size = \tkz@euc@pointsize, + /@drawpoint/.search also = {/tikz}, +} +%<-------------------------------------------------------------------------- \def\tkzDrawPoint{\pgfutil@ifnextchar[{\tkz@DrawPoint}{\tkz@DrawPoint[]}} \def\tkz@DrawPoint[#1](#2){% \begingroup -\pgfkeys{/drawpoint/.cd} -\pgfqkeys{/drawpoint}{#1} -\node[point style] at (#2) {}; + \pgfqkeys{/@drawpoint}{#1} + \node[point style,/@drawpoint/.cd,#1] at (#2) {};%2016 \endgroup } - %<--------------------------------------------------------------------------–> \def\tkzDrawPoints{\pgfutil@ifnextchar[{\tkz@drawpts}{\tkz@drawpts[]}} %<--------------------------------------------------------------------------–> \def\tkz@drawpts[#1](#2){% \begingroup -\pgfkeys{/drawpoint/.cd} -\pgfqkeys{/drawpoint}{#1} -\foreach \point in {#2}{% - \node[point style] at (\point) {};} + \pgfqkeys{/@drawpoint}{#1} + \foreach \point in {#2}{\node[point style,/@drawpoint/.cd,#1] at (\point) {};} %2016 \endgroup } %<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -% rename -%<--------------------------------------------------------------------------–> -% \def\tkzRenamePoint{\pgfutil@ifnextchar[{\tkzActivOff\tkz@RenamePoint}{% -% \tkzActivOff\tkz@RenamePoint[]}} -% \def\tkz@RenamePoint[#1](#2)#{% -% \coordinate (tkz@coord@temp) at (#2);% -% \pgfextractx{\pgf@x}{\pgfpointanchor{tkz@coord@temp}{center}} -% \pgfextracty{\pgf@y}{\pgfpointanchor{tkz@coord@temp}{center}} -% \tkz@ax\pgf@x % -% \tkz@ay\pgf@y % -% \tkz@RenamePointEnd[#1]}% +% %<--------------------------------------------------------------------------–> \def\tkzRenamePoint(#1)#2{\coordinate (#2) at (#1);} \def\tkz@RenamePointEnd[#1]#2{\coordinate[#1] (#2) at (\tkz@ax,\tkz@ay);} \def\tkzGetPoint#1{\coordinate (#1) at (tkzPointResult);} -\def\tkzGetPoints#1#2{\coordinate (#1) at (tkzFirstPointResult);% +\def\tkzGetPoints#1#2{\coordinate (#1) at (tkzFirstPointResult); \coordinate (#2) at (tkzSecondPointResult);} \def\tkzGetFirstPoint#1{\coordinate (#1) at (tkzFirstPointResult);} \def\tkzGetSecondPoint#1{\coordinate (#1) at (tkzSecondPointResult);} \def\tkzDefShiftPointCoord[#1](#2)#3{% -\begin{scope}[shift={(#1)}] - \coordinate (#3) at (#2); -\end{scope} -}% - + \begin{scope}[shift={(#1)}] + \coordinate (#3) at (#2); + \end{scope} + }% +%<--------------------------------------------------------------------------–> +% tkzDefShiftPoint +%<--------------------------------------------------------------------------–> \def\tkzDefShiftPoint[#1](#2)#3{% - \tkz@@extractxy{#1} - \tkz@ax\pgf@x % - \tkz@ay\pgf@y % + \tkz@@extractxy{#1} + \tkz@ax\pgf@x % + \tkz@ay\pgf@y % \begin{scope}[shift={(\tkz@ax,\tkz@ay)}] \coordinate (#3) at (#2); \end{scope} } %<-------------------------------------------------------------------------–> -% tkzLabelPoint Affichage des LABELS pour un point -%<-------------------------------------------------------------------------–> -% \newif\iftkz@mode@show -% \tikzoption{show}{\tikz@addmode{\tkz@mode@showfalse}} -\tikzset{label style/.style={\tkz@euc@pointpos,\tkz@euc@labelcolor,font=\normalsize}} +% tkzLabelPoint Affichage des LABELS pour un point +%<-------------------------------------------------------------------------–> +\tikzset{label style/.style={\tkz@euc@pointpos,\tkz@euc@labelcolor, + font=\normalsize}} \def\tkzLabelPoint{\pgfutil@ifnextchar[{\tkz@LabelPoint}{\tkz@LabelPoint[]}} -\def\tkz@LabelPoint[#1](#2)#3{\node[label style,#1] at (#2) {#3};}% +\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$};} + \node[label style,#1] at (\point) {$\point$};} +}% +%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------–> + +\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 }% %<--------------------------------------------------------------------------–> -% Coord -%<--------------------------------------------------------------------------–> -\newif\if@tkz@coord@noxdraw -\newif\if@tkz@coord@noydraw -\pgfkeys{ -/tkzprcoord/.cd, - xlabel/.code = {\global\edef\tkz@xlabel{#1}},% - ylabel/.code = {\global\edef\tkz@ylabel{#1}}, - 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, - /tkzprcoord/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}} +% 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\tkzPointShowCoord{\pgfutil@ifnextchar[{\tkz@PointShowCoord}{\tkz@PointShowCoord[]}} \def\tkz@PointShowCoord[#1](#2){% \begingroup -\pgfkeys{% -tkzprcoord/.cd, - xlabel = {}, - ylabel = {}, - xstyle = {}, - ystyle = {}, - noxdraw = false, - noydraw = false - } -\pgfqkeys{/tkzprcoord}{#1} -\if@tkz@coord@noxdraw\else\draw[arrow coord style] (#2)--(#2 |- tkz@xline); \fi -\if@tkz@coord@noydraw\else \draw[arrow coord style] (#2)--(#2 -| tkz@yline);\fi +\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 - \protected@edef\tkz@temp{% - \noexpand\path (#2)--(#2 |- tkz@xline) - \noexpand node[xcoord style]}\tkz@temp {\tkz@xlabel}; +\path (#2)--(#2 |- tkz@xline) + node[xcoord style] {\tkz@xlabel}; \fi \ifx\tkzutil@empty\tkz@ylabel \else - \protected@edef\tkz@temp{% - \noexpand\path (#2)--(#2 -| tkz@yline) - \noexpand node[ycoord style]}\tkz@temp {\tkz@ylabel}; + \path (#2)--(#2 -| tkz@yline) + node[ycoord style] {\tkz@ylabel}; \fi \endgroup } - -%<-------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -% tkzPoint -%<--------------------------------------------------------------------------–> -\pgfkeys{ - tkzpt/.cd, - pos/.code = {\def\tkz@pt@pos{#1}}, - size/.code = {\def\tkz@pt@size{#1}}, - name/.code = {\def\tkz@pt@name{#1}}, - namecolor/.code = {\def\tkz@pt@namecolor{#1}}, - time/.code = {\def\tkz@pt@time{#1}}, - color/.code = {\def\tkz@pt@color{#1}}, - shape/.code = {\def\tkz@pt@shape{#1}}, - polar/.is if = tkz@pt@polar, - polar/.default = true, - noname/.is if = tkz@pt@noname, - noname/.default = true -} - -\def\tkz@node#1{\path[coordinate](\ptxa,\ptya) coordinate(#1);} -\def\tkz@drawnode#1{\path[coordinate](\ptxa,\ptya) coordinate(#1); -\tkz@DrawPt{#1} -} - -\def\tkz@draw@point#1{% - \node[ inner sep = 0pt, - shape = \tkz@pt@shape,% - draw = \tkz@pt@color,% - minimum size = \tkz@pt@size*\pgflinewidth,% - fill = \tkz@pt@color] at (#1) {};} - -\def\tkzPoint{\@ifstar\tkzptStar\tkzptNoStar} -\def\tkzptNoStar{\pgfutil@ifnextchar[{\tkz@ptNoStar}{\tkz@ptNoStar[]}} -\def\tkz@ptNoStar[#1](#2,#3)#{% -\pgfkeys{/tkzpt/.cd, - noname = false,% pas de nom - name = {},% le nom est vide - polar = false,% - namecolor = \tkz@euc@labelcolor,% couleur du nom - pos = \tkz@euc@pointpos,% name - shape = \tkz@euc@pointshape,% - color = \tkz@euc@pointcolor,% couleur du point - size = \tkz@euc@pointsize,% - time = 0.5 -} -\pgfqkeys{/tkzpt}{#1} - \iftkz@pt@polar% - \FPeval\tkz@x{(#2*cos(#3*\FPpi/180))} - \FPeval\tkz@y{(#2*sin(#3*\FPpi/180))} - \else - \FPeval\tkz@x{(#2)} - \FPeval\tkz@y{(#3)} - \fi - - \FPadd{\ptxa}{\tkz@x}{-\tkz@init@xorigine} - \FPadd{\ptya}{\tkz@y}{-\tkz@init@yorigine} - \FPdiv{\ptxa}{\ptxa}{\tkz@init@xstep} - \FPdiv{\ptya}{\ptya}{\tkz@init@ystep} - \tkz@drawnode -} -% dessin du point (par défaut c'est un node donc il ne peut pas être scalé) -\def\tkz@DrawPt#1{% - \iftkz@pt@noname% pas de nom rien - \else% si name={} alors on prend le nom du node sinon name - \ifx\tkzutil@empty\tkz@pt@name\def\tkz@pt@name{$#1$}% - \fi - \protected@edef\tkz@temp{% - \noexpand \node[\tkz@pt@pos]}\tkz@temp at (#1)% - {\textcolor{\tkz@pt@namecolor} {\tkz@pt@name}};% - \fi -% on retrace ??? ici ou après le fi -\tkz@draw@point{#1} -} - -%<--------------------------------------------------------------------------–> -% Star version tkzPoint* -%<--------------------------------------------------------------------------–> -\def\tkzptStar{\pgfutil@ifnextchar[{\tkz@ptStar}{\tkz@ptStar[]}} -\def\tkz@ptStar[#1](#2,#3)#{% -\pgfkeys{/tkzpt/.cd, - polar = false,% -} -\pgfqkeys{/tkzpt}{#1} -\iftkz@pt@polar% - \FPeval\tkz@x{(#3*cos(#2*\FPpi/180))} - \FPeval\tkz@y{(#3*sin(#2*\FPpi/180))} -\else - \FPeval\tkz@x{(#2)} - \FPeval\tkz@y{(#3)} -\fi -\FPadd{\ptxa}{\tkz@x}{-\tkz@init@xorigine} -\FPadd{\ptya}{\tkz@y}{-\tkz@init@yorigine} -\FPdiv{\ptxa}{\ptxa}{\tkz@init@xstep} -\FPdiv{\ptya}{\ptya}{\tkz@init@ystep} -\tkz@node -} - -%<--------------------------------------------------------------------------–> -% Points -%<--------------------------------------------------------------------------–> -\def\tkzPoints{\pgfutil@ifnextchar[{\tkz@Points}{\tkz@Points[]}} -\def\tkz@Points[#1](#2){% -\begingroup - \foreach \ptx/\pty/\name in {#2}{% - \tkzPoint[#1](\ptx,\pty){\name}% - } -\endgroup -} - - %<--------------------------------------------------------------------------–> -% macro d'affichage % -%<--------------------------------------------------------------------------–> -\pgfqkeys{/pointwith} -{ orthogonal/.code =\def\tkz@numv{0}, - orthogonal normed/.code =\def\tkz@numv{1}, - linear/.code =\def\tkz@numv{2}, - linear normed/.code =\def\tkz@numv{3}, - colinear/.code args ={at #1} {\global\def\tkz@numv{4} - \global\def\tkz@frompoint{#1}}, - K/.code =\def\tkz@Koeff{#1} - } - -\def\tkzDefPointWith{\pgfutil@ifnextchar[{\tkz@DefPointWith}{% - \tkz@DefPointWith[]}} -\def\tkz@DefPointWith[#1](#2){% -\pgfqkeys{/pointwith}{linear,K=1} -\pgfqkeys{/pointwith}{#1} -\ifcase\tkz@numv% - % first case 0 - \tkz@VecKOrth[\tkz@Koeff](#2){tkzPointResult} - \or% 1 - \tkz@VecKOrthNorm[\tkz@Koeff](#2){tkzPointResult} - \or% 2 - \tkz@VecK[\tkz@Koeff](#2){tkzPointResult} - \or% 3 - \tkz@VecKNorm[\tkz@Koeff](#2){tkzPointResult} - \or% 4 - \tkz@VecKCoLinear[\tkz@Koeff](#2,\tkz@frompoint){tkzPointResult} - \fi -} - -%<-------------------------------------------------------------------------–> -% % % Points aléatoires sur un segment, une droite, une demi-droite un cercle -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -% les points aléatoires -%<--------------------------------------------------------------------------–> -\def\tkz@numrp{0} -\pgfkeys{/tkzDefRandPoint/.cd, -rectangle/.code args={#1 and #2}{\global\def\tkz@numrp{0}% - \global\def\tkz@infl{#1}% - \global\def\tkz@supr{#2}}, -segment/.code args={#1--#2}{\global\def\tkz@numrp{1}% - \global\def\tkz@start{#1}% - \global\def\tkz@end{#2}}, -line/.code args={#1--#2}{\global\def\tkz@numrp{2}% - \global\def\tkz@start{#1}% - \global\def\tkz@end{#2}}, -circle/.code args={center #1 radius #2}{\def\tkz@numrp{3}% - \global\def\tkz@center{#1} - \global\def\tkz@rad{#2}} -} - -\def\tkzGetRandPointOn{\pgfutil@ifnextchar[{\tkz@DefRandPointOn}{% - \tkz@DefRandPointOn[]}} -\def\tkz@DefRandPointOn[#1]#2{% -\begingroup -\pgfkeys{/tkzDefRandPoint/.cd} -\pgfqkeys{/tkzDefRandPoint}{#1} -\ifcase\tkz@numrp% - % first case 0 - \tkzRandPointOnRect(\tkz@infl,\tkz@supr){#2} - \or% 1 - \tkzRandPointOnSegment(\tkz@start,\tkz@end){#2} - \or% 2 - \tkzRandPointOnLine(\tkz@start,\tkz@end){#2} - \or% 3 - \tkzRandPointOnCircle(\tkz@center,\tkz@rad){#2} -\fi -\endgroup -} - -\def\tkzRandPointOnRect(#1,#2)#3{% -\tkz@@extractxy{#1} - \pgf@xa=\pgf@x\relax% - \pgf@ya=\pgf@y\relax% -\tkz@@extractxy{#2} - \pgf@xb=\pgf@x\relax% - \pgf@yb=\pgf@y\relax% -\FPadd{\tkz@a}{\pgf@sys@tonumber{\pgf@xb}}{-\pgf@sys@tonumber{\pgf@xa}} -\FPadd{\tkz@b}{\pgf@sys@tonumber{\pgf@yb}}{-\pgf@sys@tonumber{\pgf@ya}} - \pgfmathparse{rnd}\global\let\myrndone\pgfmathresult - \pgfmathparse{rnd}\global\let\myrndtwo\pgfmathresult -\path[coordinate] ($(#1)+(\myrndone*\tkz@a pt,% - \myrndtwo*\tkz@b pt)$) coordinate (#3); - } - -\def\tkzRandPointOnSegment(#1,#2)#3{% - \pgfmathparse{rnd}\global\let\myrnd\pgfmathresult -\path[coordinate] ($ (#1)!\myrnd!(#2) $) coordinate (#3);} - -\def\tkzRandPointOnLine(#1,#2)#3{% - \pgfmathparse{rand}\global\let\myrnd\pgfmathresult -\path[coordinate] ($ (#1)!\myrnd!(#2) $) coordinate (#3);} - -\def\tkzRandPointOnCircle(#1,#2)#3{% -\pgfmathrandominteger{\myrnd}{0}{360} -\tkz@ax#2 % -\FPeval\tkz@xa{\pgf@sys@tonumber{\tkz@ax}*cos(\myrnd*\FPpi/180)} -\FPeval\tkz@xb{\pgf@sys@tonumber{\tkz@ax}*sin(\myrnd*\FPpi/180)} -\path[coordinate]($(#1) + (\tkz@xa pt,\tkz@xb pt) $) coordinate (#3); -} - %<--------------------------------------------------------------------------–> % 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 !!! %<--------------------------------------------------------------------------–> +% 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} + \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 diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-rep.tex b/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-rep.tex new file mode 100644 index 00000000000..d66e9fc8954 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-rep.tex @@ -0,0 +1,62 @@ +% tkz-obj-rep.tex +% Copyright 2011 by Alain Matthes +% +% This file may be distributed and/or modified +% +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c tkz-obj-rep.tex} +\makeatletter +%<--------------------------------------------------------------------------–> +% repère +%<--------------------------------------------------------------------------–> +\pgfkeys{/@tkzRep/.cd, + line width/.store in = \tkz@Rep@lw, + xlabel/.store in = \tkz@Rep@xlabel, + ylabel/.store in = \tkz@Rep@ylabel, + posxlabel/.store in = \tkz@Rep@posxlabel, + posylabel/.store in = \tkz@Rep@posylabel, + xnorm/.store in = \tkz@Rep@xnorm, + ynorm/.store in = \tkz@Rep@ynorm, + color/.store in = \tkz@Rep@color, + colorlabel/.store in = \tkz@Rep@colorlabel, + line width = \tkz@sur@lw, + xlabel = $\vec{\imath}$, + ylabel = $\vec{\jmath}$, + posxlabel = \tkz@sur@posxlabel, + posylabel = \tkz@sur@posylabel, + xnorm = 1, + ynorm = 1, + color = \tkz@sur@color,% remove ? + colorlabel = \tkz@sur@colorlabel, + /@tkzRep/.search also={/tikz}, + } +%<--------------------------------------------------------------------------–> +\def\tkzRep{\pgfutil@ifnextchar[{\tkz@Rep}{% + \tkz@Rep[]}} +\def\tkz@Rep[#1]{% +\pgfqkeys{/@tkzRep}{#1} +\begingroup + \protected@edef\tkz@temp{% + \noexpand\draw [ line width=\tkz@Rep@lw, + color=\tkz@Rep@color, + rep style]% + (0,0) to node[\tkz@Rep@posylabel, + color = \tkz@Rep@colorlabel, + node contents={\tkz@Rep@ylabel}]}\tkz@temp% + {}(0,\tkz@Rep@ynorm); + \protected@edef\tkz@temp{% + \noexpand \draw [ line width=\tkz@Rep@lw, + color=\tkz@Rep@color, + rep style]% + (0,0) to node[ \tkz@Rep@posxlabel, + color = \tkz@Rep@colorlabel, + node contents={\tkz@Rep@xlabel}]}\tkz@temp% + {}(\tkz@Rep@xnorm,0); +\endgroup +} +%<--------------------------------------------------------------------------–> +\makeatother +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-segments.tex b/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-segments.tex deleted file mode 100644 index 4826368640f..00000000000 --- a/Master/texmf-dist/tex/latex/tkz-base/tkz-obj-segments.tex +++ /dev/null @@ -1,142 +0,0 @@ -% Copyright 2011 by Alain Matthes -% -% This file may be distributed and/or modified -% -% 1. under the LaTeX Project Public License and/or -% 2. under the GNU Public License. - - -\def\fileversion{1.16 d} -\def\filedate{2018/09/19} - -%<--------------------------------------------------------------------------–> -% Setup Segment -%<--------------------------------------------------------------------------–> - -%<--------------------------------------------------------------------------–> -% draw segment (s) -%<--------------------------------------------------------------------------–> -\def\tkzDrawSegment{\pgfutil@ifnextchar[{\tkz@DrawSegment}{% - \tkz@DrawSegment[]}} -\def\tkz@DrawSegment[#1](#2,#3){% -\begingroup - \draw[line style,add=0 and 0,#1] (#2) to (#3); -\endgroup -}% - -\def\tkz@multiDrawSeg#1 #2\@nil{% - \protected@edef\tkz@temp{ - \noexpand \tkzDrawSegment[\tkz@optseg](#1)}\tkz@temp% - \def\tkz@nextArg{#2}% - \ifx\tkzutil@empty\tkz@nextArg - \let\next\@gobble - \fi - \next#2\@nil -} -\def\tkzDrawSegments{\pgfutil@ifnextchar[{\tkz@DrawSegments}{% - \tkz@DrawSegments[]}} -\def\tkz@DrawSegments[#1](#2){% -\global\edef\tkz@optseg{#1} -\begingroup - \let\next\tkz@multiDrawSeg - \next#2 \@nil % -\endgroup -} -%<-------------------------------------------------------------------------–> -%<-------------------------------------------------------------------------–> -\pgfkeys{tkzmarkoptions/.cd, -pos/.code = {\global\def\tkz@mkpos{#1}}, -color/.code = {\global\def\tkz@mkcolor{#1}}, -mark/.code = {\global\def\tkz@mark{#1}}, -size/.code = {\global\def\tkz@mksize{#1}}, -/tkzmarkoptions/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1} - } -} - -\def\tkzMarkSegment{\pgfutil@ifnextchar[{\tkz@MarkSegment}{% - \tkz@MarkSegment[]}} -\def\tkz@MarkSegment[#1](#2,#3){% -\pgfkeys{tkzmarkoptions/.cd, - size = 4pt, - color = \tkz@mk@color, - pos = .5, - mark = none} -\pgfqkeys{/tkzmarkoptions}{#1} - -\global\def\tkz@mymark{% - \pgfsetplotmarksize{\tkz@mksize} - \pgfuseplotmark{\tkz@mark} -} -\begin{scope} [decoration={ markings,mark=at position \tkz@mkpos with \tkz@mymark}] -\path [\tkz@mkcolor,postaction={decorate}] (#2) -- (#3); -\end{scope} -} -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -% multiple -\def\tkz@multiMS#1 #2\@nil{% - \protected@edef\tkz@temp{ - \noexpand \tkzMarkSegment[\tkz@optsg](#1)}\tkz@temp% - \def\tkz@nextArg{#2}% - \ifx\tkzutil@empty\tkz@nextArg - \let\next\@gobble - \fi - \next#2\@nil -} -%<--------------------------------------------------------------------------–> -\def\tkzMarkSegments{\pgfutil@ifnextchar[{\tkz@MarkSegments}{% - \tkz@MarkSegments[]}} -\def\tkz@MarkSegments[#1](#2){% -\global\edef\tkz@optsg{#1} - \begingroup - \let\next\tkz@multiMS - \next#2 \@nil % -\endgroup -} -%<--------------------------------------------------------------------------–> -%<------------------------- Label on segment -------------------------------–> -%<--------------------------------------------------------------------------–> -\def\tkzLabelSegment{\pgfutil@ifnextchar[{\tkz@LabelSegment}{% - \tkz@LabelSegment[]}} -\def\tkz@LabelSegment[#1](#2,#3)#4{% -\begingroup -\path (#2) to node[above,#1]{#4} (#3) ; -\endgroup -} -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -% multiple -\def\tkz@multiLS#1 #2\@nil{% - \protected@edef\tkz@temp{ - \noexpand \tkzLabelSegment[\tkz@optls](#1){\tkz@labelseg}}\tkz@temp% - \def\tkz@nextArg{#2}% - \ifx\tkzutil@empty\tkz@nextArg - \let\next\@gobble - \fi - \next#2\@nil -} -%<--------------------------------------------------------------------------–> -\def\tkzLabelSegments{\pgfutil@ifnextchar[{\tkz@LabelSegments}{% - \tkz@LabelSegments[]}} -\def\tkz@LabelSegments[#1](#2)#3{% -\global\edef\tkz@optls{#1} -\global\def\tkz@labelseg{#3} - \begingroup - \let\next\tkz@multiLS - \next#2 \@nil % -\endgroup -} -%<--------------------------------------------------------------------------–> -% PolySeg -%<--------------------------------------------------------------------------–> -\def\tkzDrawPolySeg{\pgfutil@ifnextchar[{\tkz@DrawPolySeg}{% - \tkz@DrawPolySeg[]}} -\def\tkz@DrawPolySeg[#1](#2,#3){% -\begingroup -\draw[#1] (#2) - \foreach \tkz@pt in {#3}{--(\tkz@pt)};% -\endgroup -} -\endinput diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-BB.tex b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-BB.tex new file mode 100644 index 00000000000..81b1bd4ed5f --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-BB.tex @@ -0,0 +1,63 @@ +% tkz-tools-BB.tex +% Copyright 2011 by Alain Matthes +% This file may be distributed and/or modified +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c tkz-obj-BB.tex} +\makeatletter +%<--------------------------------------------------------------------------–> +\pgfkeys{/@tkzClip/.cd, +space/.store in = {\tkz@CLI@space}, +space = {}} + +\def\tkzClip{\pgfutil@ifnextchar[{\tkz@Clip}{\tkz@Clip[]}} +\def\tkz@Clip[#1]{% + +\pgfqkeys{/@tkzClip}{#1} +\ifx\tkzutil@empty\tkz@CLI@space + \clip (\tkz@xa,\tkz@ya) rectangle (\tkz@xb,\tkz@yb); + \else + \edef\tkz@xxa{\fpeval{\tkz@xa-\tkz@CLI@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); +\fi +} +%<--------------------------------------------------------------------------–> +\def\tkzSetBB(#1)(#2){% + \pgfresetboundingbox + \path coordinate (tkz@SW) at (#1) + coordinate (tkz@NE) at (#2); + \path[use as bounding box](#1) rectangle (#2); + } +%<--------------------------------------------------------------------------–> +\def\tkzSaveBB{% +\path coordinate (tkz@SW) at (current bounding box.north east) + coordinate (tkz@NE) at (current bounding box.south west); +} +%<--------------------------------------------------------------------------–> +\def\tkzRestoreBB{% + \pgfresetboundingbox + \path[use as bounding box] (tkz@SW) rectangle (tkz@NE) ; +} +%<--------------------------------------------------------------------------–> +\def\tkzShowBB{\pgfutil@ifnextchar[{\tkz@ShowBB}{\tkz@ShowBB[]}} +\def\tkz@ShowBB[#1]{% + \draw[#1] (current bounding box.south west) rectangle + (current bounding box.north east); +} +%<--------------------------------------------------------------------------–> +\def\tkzClipBB{% +\clip (current bounding box.south west) rectangle + (current bounding box.north east); +} +%<--------------------------------------------------------------------------–> +\tikzset{tkzreverseclip/.style={insert path={% + (\tkz@xa,\tkz@ya) rectangle (\tkz@xb,\tkz@yb)}}} +%todo add options +%<--------------------------------------------------------------------------–> +\makeatother +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-arith.tex b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-arith.tex index 01e858d052a..296c53fe348 100644 --- a/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-arith.tex +++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-arith.tex @@ -1,27 +1,25 @@ +% tkz-tools-arith.tex % Copyright 2011 by Alain Matthes -% % This file may be distributed and/or modified -% % 1. under the LaTeX Project Public License and/or % 2. under the GNU Public License. - - -\def\fileversion{1.161 d} -\def\filedate{2018/09/19} +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c tkz-tools-arith.tex} % 1.161 test if "isfactor" is already defined - +% now with pgf 3.0 gcd isprime isodd iseven are defined %<--------------------------------------------------------------------------–> % Objet : tools for arithmetic %<--------------------------------------------------------------------------–> % [About integers numbers] %<--------------------------------------------------------------------------–> -\ProvidesFile{tkz-tool-arith.tex}[tkz-tool-arith 1.161 d] -\edef\tkzAtCode{\the\catcode`\@} -\catcode`\@=11\relax +\ProvidesFile{tkz-tool-arith.tex}[tkz-tool-arith 3.00 c] +% \edef\tkzAtCode{\the\catcode`\@} +% \catcode`\@=11\relax +\makeatletter %<--------------------------------------------------------------------------–> % arithmetic tools %<--------------------------------------------------------------------------–> - \tkzutil@ifundefined{pgfmath@function@gcd}{% \pgfmathdeclarefunction{gcd}{2}{% \begingroup% @@ -51,10 +49,7 @@ } }{} %<---------------------------------------------------------------------------> - \tkzutil@ifundefined{pgfmath@function@isprime}{% -\newif\ifpgf@unknown -\newif\ifpgf@isaprime \pgfmathdeclarefunction{isprime}{1}{% \begingroup% \pgf@unknowntrue @@ -180,7 +175,6 @@ \tkz@find@next }% %<---------------------------------------------------------------------------> -%<---------------------------------------------------------------------------> \def\tkzReducFrac#1#2{% \begingroup \ifnum#1<0\relax% @@ -201,14 +195,12 @@ \divide\c@pgfmath@counta by\c@pgfmath@countc% \divide\c@pgfmath@countb by\c@pgfmath@countc% \fi -\global\edef\tkzMathFirstResult{\the\c@pgfmath@counta} -\global\edef\tkzMathSecondResult{\the\c@pgfmath@countb} +\xdef\tkzMathFirstResult{\the\c@pgfmath@counta} +\xdef\tkzMathSecondResult{\the\c@pgfmath@countb} \endgroup} %<---------------------------------------------------------------------------> -%<---------------------------------------------------------------------------> -%<---------------------------------------------------------------------------> - -\catcode`\@=\tkzAtCode\relax +%\catcode`\@=\tkzAtCode\relax +\makeatother \endinput diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-base.tex b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-base.tex index ee7c879bd87..926ed2347e4 100644 --- a/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-base.tex +++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-base.tex @@ -3,698 +3,81 @@ % This file may be distributed and/or modified % 1. under the LaTeX Project Public License and/or % 2. under the GNU Public License. - - % utf8 encoding - -\def\fileversion{1.16 d} -\def\filedate{2018/09/19} - +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c tkz-tools-base.tex} +\makeatletter %<--------------------------------------------------------------------------–> -\global\let\@xa\tkz@init@xmin -\global\let\@xb\tkz@init@xmax -\global\let\@ya\tkz@init@ymin -\global\let\@yb\tkz@init@ymax +\global\let\tkz@tmp@xa\tkz@init@xmin% modif 2016 +\global\let\tkz@tmp@xb\tkz@init@xmax% modif 2016 +\global\let\tkz@tmp@ya\tkz@init@ymin% modif 2016 +\global\let\tkz@tmp@yb\tkz@init@ymax% modif 2016 %<--------------------------------------------------------------------------–> -\gdef\xgrad{1} -\gdef\ygrad{1} -\gdef\tkz@xa{0} -\gdef\tkz@xb{10} -\gdef\tkz@ya{0} -\gdef\tkz@yb{10} -\newif\iftkz@init@NO \pgfkeys{ - /tkzInit/.cd, - xmin/.code = {\def\tkz@init@xmin{#1}}, - xmax/.code = {\def\tkz@init@xmax{#1}}, - xstep/.code = {\def\tkz@init@xstep{#1}}, - ymin/.code = {\def\tkz@init@ymin{#1}}, - ymax/.code = {\def\tkz@init@ymax{#1}}, - ystep/.code = {\def\tkz@init@ystep{#1}}, - NO/.is if = tkz@init@NO, - NO/.default = true } + /@tkzInit/.cd, + xmin/.store in = \tkz@init@xmin, + xmax/.store in = \tkz@init@xmax, + xstep/.store in = \tkz@init@xstep, + ymin/.store in = \tkz@init@ymin, + ymax/.store in = \tkz@init@ymax, + ystep/.store in = \tkz@init@ystep, + NO/.is if = tkz@init@NO, + NO/.default = true, + xmin = 0, + xmax = 10, + xstep = 1, + ymin = 0, + ymax = 10, + ystep = 1, + NO = false + } \def\tkzInit{\pgfutil@ifnextchar[{\tkz@Init}{\tkz@Init[]}} \def\tkz@Init[#1]{% -\pgfkeys{/tkzInit/.cd, - xmin = 0, - xmax = 10, - xstep = 1, - ymin = 0, - ymax = 10, - ystep = 1, - NO = false -} - \pgfqkeys{/tkzInit}{#1} + \pgfqkeys{/@tkzInit}{#1} \ifx\tkzfctloaded\undefined \else - \tkz@tkzf@fct=0 % only if tkz-fct loaded + \tkz@tkzf@fct=0 % only if tkz-fct loaded \fi \xdef\tkz@init@xorigine{0} \xdef\tkz@init@yorigine{0} - \FPsgn\@xsgmin{\tkz@init@xmin} - \FPsgn\@xsgmax{\tkz@init@xmax} - \FPsgn\@ysgmin{\tkz@init@ymin} - \FPsgn\@ysgmax{\tkz@init@ymax} - \global\let\@xa\tkz@init@xmin - \global\let\@xb\tkz@init@xmax - \global\let\@ya\tkz@init@ymin - \global\let\@yb\tkz@init@ymax - \tkz@init@NOfalse + \edef\@xsgmin{\fpeval{sign(\tkz@init@xmin)}} + \edef\@xsgmax{\fpeval{sign(\tkz@init@xmax)}} + \edef\@ysgmin{\fpeval{sign(\tkz@init@ymin)}} + \edef\@ysgmax{\fpeval{sign(\tkz@init@ymax)}} + \let\tkz@tmp@xa\tkz@init@xmin %modif 2016 + \let\tkz@tmp@xb\tkz@init@xmax %modif 2016 + \let\tkz@tmp@ya\tkz@init@ymin %modif 2016 + \let\tkz@tmp@yb\tkz@init@ymax %modif 2016 + \tkz@init@NOfalse \ifx\@xsgmin\@xsgmax \tkz@init@NOtrue \fi - \ifx\@ysgmin\@ysgmax \tkz@init@NOtrue \fi + \ifx\@ysgmin\@ysgmax \tkz@init@NOtrue \fi \iftkz@init@NO% \ifx\@xsgmin\@xsgmax - \FPadd{\tkz@init@xmax}{\tkz@init@xmax}{-\tkz@init@xmin}% - \edef\tkz@init@xorigine{\tkz@init@xmin} - \edef\tkz@init@xmin{0} + \edef\tkz@init@xmax{\fpeval{\tkz@init@xmax-\tkz@init@xmin}} + \edef\tkz@init@xorigine{\tkz@init@xmin} + \edef\tkz@init@xmin{0} \fi - \ifx\@ysgmin\@ysgmax - \FPadd{\tkz@init@ymax}{\tkz@init@ymax}{-\tkz@init@ymin}% - \edef\tkz@init@yorigine{\tkz@init@ymin} - \edef\tkz@init@ymin{0} + \edef\tkz@init@ymax{\fpeval{\tkz@init@ymax-\tkz@init@ymin}} + \edef\tkz@init@yorigine{\tkz@init@ymin} + \edef\tkz@init@ymin{0} \fi \fi - \FPdiv{\tkz@xa}{\tkz@init@xmin}{\tkz@init@xstep} - \FPdiv{\tkz@xb}{\tkz@init@xmax}{\tkz@init@xstep} - \FPdiv{\tkz@ya}{\tkz@init@ymin}{\tkz@init@ystep} - \FPdiv{\tkz@yb}{\tkz@init@ymax}{\tkz@init@ystep} + \edef\tkz@xa{\fpeval{\tkz@init@xmin/\tkz@init@xstep}} + \edef\tkz@xb{\fpeval{\tkz@init@xmax/\tkz@init@xstep}} + \edef\tkz@ya{\fpeval{\tkz@init@ymin/\tkz@init@ystep}} + \edef\tkz@yb{\fpeval{\tkz@init@ymax/\tkz@init@ystep}} \tkz@getdecimal{\tkz@init@xstep} % amélioration nb dec et integer - \global\edef\tkz@init@xdec{\number\c@pgfmath@countb} + \xdef\tkz@init@xdec{\number\c@pgfmath@countb} \tkz@getdecimal{\tkz@init@ystep} - \global\edef\tkz@init@ydec{\number\c@pgfmath@countb} + \xdef\tkz@init@ydec{\number\c@pgfmath@countb} }% -%<--------------------------------------------------------------------------–> -\pgfkeys{Clip/.cd, space/.code = {\def\tkz@CLI@space{#1}}} - -\def\tkzClip{\pgfutil@ifnextchar[{\tkz@Clip}{\tkz@Clip[]}} -\def\tkz@Clip[#1]{% -\pgfkeys{Clip/.cd,space = {}} -\pgfqkeys{/Clip}{#1} -\ifx\tkzutil@empty\tkz@CLI@space - \clip (\tkz@xa,\tkz@ya) rectangle (\tkz@xb,\tkz@yb); - \else - \FPadd{\tkz@xxa}{\tkz@xa}{-\tkz@CLI@space} - \FPadd{\tkz@yya}{\tkz@ya}{-\tkz@CLI@space} - \FPadd{\tkz@xxb}{\tkz@xb}{\tkz@CLI@space} - \FPadd{\tkz@yyb}{\tkz@yb}{\tkz@CLI@space} - \clip (\tkz@xxa,\tkz@yya) rectangle (\tkz@xxb,\tkz@yyb); -\fi -} -%todo add options -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -\def\tkz@showgrad#1{% -\FPifint{#1}\FPtrunc\tkz@result{#1}{0}\else\FPset\tkz@result{#1}\fi}% - -\def\tkz@Xresult{% -\tkz@showgrad{\xgrad}% - $\numprint{\tkz@result}$% -}% -%<--------------------------------------------------------------------------–> -\def\tkz@Yresult{% -\tkz@showgrad{\ygrad}% -$\numprint{\tkz@result}$ -}% -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -\def\tkz@Xshowgradresult{% -\iftkz@X@orig -\tkz@Xresult% -\else % orig - \iftkz@init@NO% - \unless\ifx\tkz@pos\tkz@posmin - \tkz@Xresult\fi - \else % NO - \unless\ifx\tkz@pos\x@tkzero% - \tkz@Xresult - \fi%end of x@tkzero - \fi%end of NO -\fi%end of orig -}% -%<--------------------------------------------------------------------------–> -\def\tkz@Yshowgradresult{% -\iftkz@Y@orig -\tkz@Yresult% -\else % orig - \iftkz@init@NO% - \unless\ifx\tkz@pos\tkz@posmin - \tkz@Yresult\fi - \else % NO - \unless\ifx\tkz@pos\y@tkzero% - \tkz@Yresult - \fi%end of x@tkzero - \fi%end of NO -\fi%end of orig -}% -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -\def\tkz@Xshowgrad{% -\iftkz@X@orig -\tkzprintfrac% -\else % orig - \iftkz@init@NO% - \unless\ifx\tz@pos\tkz@posmin - \tkzprintfrac\fi - \else % NO - \unless\ifx\tz@pos\x@tkzero% - \tkzprintfrac - \fi%end of x@tkzero - \fi%end of NO -\fi%end of orig -}% -%<--------------------------------------------------------------------------–> -\def\tkz@Yshowgrad{% -\iftkz@Y@orig -\tkzprintfrac% -\else % orig - \iftkz@init@NO% - \unless\ifx\tz@pos\tkz@posmin - \tkzprintfrac\fi - \else % NO - \unless\ifx\tz@pos\y@tkzero% - \tkzprintfrac - \fi%end of x@tkzero - \fi%end of NO -\fi%end of orig -}% - -%<--------------------------------------------------------------------------–> -% Setup axe -%<--------------------------------------------------------------------------–> -\pgfkeys{tkzaxis/.cd, -line width/.code = {\global\edef\tkz@sua@lw{#1}}, -color/.code = {\global\edef\tkz@sua@color{#1}}, -tickwd/.code = {\global\edef\tkz@sua@tickwd{#1}}, -ticka/.code = {\global\edef\tkz@sua@ticka{#1}}, -tickb/.code = {\global\edef\tkz@sua@tickb{#1}} -} - -\def\tkzSetUpAxis{\pgfutil@ifnextchar[{\tkz@SetUpAxis}{\tkz@SetUpAxis[]}} -\def\tkz@SetUpAxis[#1]{% -\begingroup - \pgfkeys{/tkzaxis/.cd, - line width = \tkz@init@lw, - color = \tkz@init@color, - tickwd = \tkz@init@tickwd, - ticka = \tkz@init@ticka, - tickb = \tkz@init@tickb - } -\pgfqkeys{/tkzaxis}{#1} -\global\let\tkz@init@lw\tkz@sua@lw -\global\let\tkz@init@gradsize\tkz@sua@gradsize -\global\let\tkz@init@color\tkz@sua@color -\global\let\tkz@init@tickwd\tkz@sua@tickwd -\global\let\tkz@init@ticka\tkz@sua@ticka -\global\let\tkz@init@tickb\tkz@sua@tickb -\endgroup} -%<--------------------------------------------------------------------------–> -% tkzDrawX todo améliorer les unités -%<--------------------------------------------------------------------------–> -\pgfkeys{% prob avec space -tkzdrawX/.cd, -color/.code = {\global\def\tkz@X@color{#1}}, -label/.code = {\global\def\tkz@X@label{#1}}, -right space/.code = {\global\def\tkz@axe@rxspace{#1}}, -left space/.code = {\global\def\tkz@axe@lxspace{#1}}, -noticks/.is if = tkz@X@noticks, -noticks/.default = true, -trig/.code = {\global\def\tkz@X@trig{#1}}, -step/.code = {\FPeval\tkz@posnext{#1}}, -tickwd/.code = {\global\def\tkz@X@tickwd{#1}}, -tickup/.code = {\global\def\tkz@X@tickup{#1}}, -tickdn/.code = {\global\def\tkz@X@tickdn{#1}}, -/tkzdrawX/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}}} - -\def\tkzDrawX{\pgfutil@ifnextchar[{\tkz@DrawX}{\tkz@DrawX[]}} -\def\tkz@DrawX[#1]{ -\begingroup% -\pgfkeys{/tkzdrawX/.cd, -color = \tkz@init@color, -label = \tkz@init@xlabel, -trig = 0, -step = \tkz@init@xstep, -right space = \tkz@init@rightspace, -left space = \tkz@init@leftspace, -noticks = false, -tickwd = \tkz@init@tickwd, -tickup = \tkz@init@ticka, -tickdn = \tkz@init@tickb} -\pgfqkeys{/tkzdrawX}{#1} -\FPtrunc\tkz@posmax{\tkz@xb}{\tkz@init@xdec} -\FPtrunc\tkz@posmin{\tkz@xa}{\tkz@init@xdec} -\FPadd\tkz@xbsup{\tkz@xb}{\tkz@axe@rxspace} -\FPadd\tkz@xainf{\tkz@xa}{-\tkz@axe@lxspace} -\path (\tkz@xainf,0)--(\tkz@xbsup,0) node(tkz@xline){}; -\draw[xaxe style, - color = \tkz@X@color, - /tkzdrawX/.cd, #1] (\tkz@xainf,0)--(\tkz@xbsup,0) - node[xlabel style, /tkzdrawX/.cd, #1]{\tkz@X@label}; - \iftkz@X@noticks - \else - \ifnum\tkz@X@trig=0 - \FPtrunc\tkz@posmax{\tkz@posmax}{\tkz@init@xdec}% - \FPdiv\tkz@posnext{\tkz@posnext}{\tkz@init@xstep} - \FPadd\tz@posnext{\tkz@posmin}{\tkz@posnext} - \foreach \tz@pos in {\tkz@posmin,\tz@posnext,...,\tkz@posmax}{% - \draw[color = \tkz@X@color, - line width = \tkz@X@tickwd, - shift = {(\tz@pos,0)}]% - (0pt,\tkz@X@tickup)--(0pt,-\tkz@X@tickdn);} - \else - \FPadd{\tkz@posmin}{\tkz@posmin}{.5}% - \FPdiv\tkz@posmax{\tkz@posmax}{\FPpi}% - \FPmul\tkz@posmax{\tkz@posmax}{\tkz@X@trig}% - \FPdiv\tkz@posmin{\tkz@posmin}{\FPpi}% - \FPmul\tkz@posmin{\tkz@posmin}{\tkz@X@trig}% - \FPround\tkz@posmin{\tkz@posmin}{0}% - \foreach \tz@pos in {\tkz@posmin,...,\tkz@posmax}{% - \FPmul\tz@pospi{\tz@pos}{\FPpi} - \FPdiv\tz@pospi{\tz@pospi}{\tkz@X@trig}% - \draw[color = \tkz@X@color, - line width = \tkz@X@tickwd,% - shift = {(\tz@pospi,0)}]% - (0pt,\tkz@X@tickup)--(0pt,-\tkz@X@tickdn); - }% end foreach - \fi - \fi -\endgroup} -%<--------------------------------------------------------------------------–> -\pgfkeys{% prob avec space -tkzAxeX/.cd, -color/.code = {\def\tkz@X@color{#1}}, -label/.code = {\global\def\tkz@X@label{#1}}, -frac/.code = {\def\tkzX@frac{#1}}, -trig/.code = {\def\tkzX@trig{#1}}, -/tkzAxeX/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}}} - -\def\tkzAxeX{\pgfutil@ifnextchar[{\tkz@AxeX}{\tkz@AxeX[]}} -\def\tkz@AxeX[#1]{% -\begingroup -\tkzLabelX[#1] \tkzDrawX[#1] -\endgroup -} - - -%<--------------------------------------------------------------------------–> -% tkzDrawY todo améliorer les unités -%<--------------------------------------------------------------------------–> -\pgfkeys{% prob avec space -tkzdrawY/.cd, -color/.code = {\def\tkz@Y@color{#1}}, -label/.code = {\def\tkz@Y@label{#1}}, -up space/.code = {\global\def\tkz@axe@uyspace{#1}}, -down space/.code = {\global\def\tkz@axe@dyspace{#1}}, -noticks/.is if = tkz@Y@noticks, -noticks/.default = true, -trig/.code = {\global\def\tkz@Y@trig{#1}}, -step/.code = {\FPeval\tkz@posnext{#1}}, -tickwd/.code = {\global\def\tkz@Y@tickwd{#1}}, -ticklt/.code = {\global\def\tkz@Y@ticklt{#1}}, -tickrt/.code = {\global\def\tkz@Y@tickrt{#1}}, -/tkzdrawY/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}}} - -\def\tkzDrawY{\pgfutil@ifnextchar[{\tkz@DrawY}{\tkz@DrawY[]}} -\def\tkz@DrawY[#1]{% -\begingroup -\pgfkeys{/tkzdrawY/.cd, -color = \tkz@init@color, -label = \tkz@init@ylabel, -trig = 0, -step = \tkz@init@ystep, -up space = \tkz@init@upspace, -down space = \tkz@init@downspace, -noticks = false, -tickwd = \tkz@init@tickwd, -ticklt = \tkz@init@tickb, -tickrt = \tkz@init@ticka} -\pgfqkeys{/tkzdrawY}{#1} -\FPtrunc\tkz@posmax{\tkz@yb}{\tkz@init@ydec} -\FPtrunc\tkz@posmin{\tkz@ya}{\tkz@init@ydec} -\FPadd\tkz@ybsup{\tkz@yb}{\tkz@axe@uyspace} -\FPadd\tkz@yainf{\tkz@ya}{-\tkz@axe@dyspace} -\path (0,\tkz@yainf)--(0,\tkz@ybsup) node(tkz@yline){}; -\draw[color = \tkz@Y@color, - yaxe style,/tkzdrawY/.cd,#1] (0,\tkz@yainf)--(0,\tkz@ybsup) - node[ylabel style,/tkzdrawY/.cd,#1]{\tkz@Y@label}; - \iftkz@Y@noticks - \else - \ifnum\tkz@Y@trig=0 - \FPtrunc\tkz@posmax{\tkz@posmax}{\tkz@init@ydec}% - \FPdiv\tkz@posnext{\tkz@posnext}{\tkz@init@ystep} - \FPadd\tz@posnext{\tkz@posmin}{\tkz@posnext} - \foreach \tz@pos in {\tkz@posmin,\tz@posnext,...,\tkz@posmax}{% - \draw[color = \tkz@Y@color, - line width = \tkz@Y@tickwd, - shift = {(0,\tz@pos)}]% - (\tkz@Y@tickrt,0pt)--(-\tkz@Y@ticklt,0pt);} - \else - \FPadd{\tkz@posmin}{\tkz@posmin}{.5}% - \FPdiv\tkz@posmax{\tkz@posmax}{\FPpi}% - \FPmul\tkz@posmax{\tkz@posmax}{\tkz@Y@trig}% - \FPdiv\tkz@posmin{\tkz@posmin}{\FPpi}% - \FPmul\tkz@posmin{\tkz@posmin}{\tkz@Y@trig}% - \FPround\tkz@posmin{\tkz@posmin}{0}% - \foreach \tz@pos in {\tkz@posmin,...,\tkz@posmax}{% - \FPmul\tz@pospi{\tz@pos}{\FPpi} - \FPdiv\tz@pospi{\tz@pospi}{\tkz@Y@trig}% - \draw[color = \tkz@Y@color, - line width = \tkz@Y@tickwd,% - shift = {(0,\tz@pospi)}]% - (\tkz@Y@tickrt,0pt)--(-\tkz@Y@ticklt,0pt); - }% end foreach - \fi - \fi -\endgroup} -%<---------------------------------------------------------------------------> -\newif\iftkz@np -\pgfkeys{% prob avec space -tkzlabelX/.cd, -frac/.code = {\def\tkz@X@frac{#1}}, -trig/.code = {\def\tkz@X@trig{#1}}, -step/.code = {\def\tkz@posnext{#1}}, -label options/.code = {\def\cmd@X@option{#1}}, -np off/.is if = tkz@np, -np off/.default = true, -orig/.is if = tkz@X@orig, -orig/.default = false, -tickwd/.code = {\global\def\tkz@X@tickwd{#1}}, -tickup/.code = {\global\def\tkz@X@tickup{#1}}, -tickdn/.code = {\global\def\tkz@X@tickdn{#1}}, -/tkzlabelX/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}}} - \def\tkzLabelX{\pgfutil@ifnextchar[{\tkz@LabelX}{\tkz@LabelX[]}} -\def\tkz@LabelX[#1]{% -\begingroup -\pgfkeys{/tkzlabelX/.cd, -frac = 0, -trig = 0, -step = \tkz@init@xstep, -np off = false, -orig = true, -label options = {}, -tickwd = \tkz@init@tickwd, -tickup = \tkz@init@ticka, -tickdn = \tkz@init@tickb} -\pgfqkeys{/tkzlabelX}{#1} -\iftkz@np\let\numprint@saved\numprint % -\let\numprint\relax\fi % - -\FPtrunc\tkz@posmin{\tkz@xa}{\tkz@init@xdec}% -\FPtrunc\tkz@posmax{\tkz@xb}{\tkz@init@xdec}% -\FPtrunc\x@tkzero{0.0000000}{\tkz@init@xdec}% - -\ifnum\tkz@X@frac=0 % - \ifnum\tkz@X@trig=0 % affichage normal - \FPdiv\tz@posnext{\tkz@posnext}{\tkz@init@xstep} - \FPadd\tz@posnext{\tkz@posmin}{\tz@posnext} - \foreach \tz@pos in {\tkz@posmin,\tz@posnext,...,\tkz@posmax}{% - \FPtrunc\tkz@pos{\tz@pos}{\tkz@init@xdec}% - \FPmul{\xgrad}{\tz@pos}{\tkz@init@xstep}% - \FPadd{\xgrad}{\xgrad}{\tkz@init@xorigine}% - \FPtrunc\xgrad{\xgrad}{\tkz@init@xdec}% - \protected@edef\tkz@temp{% - \noexpand\path[shift = {(\tz@pos,0)}] - (0pt,\tkz@X@tickup)--(0pt,-\tkz@X@tickdn)% - node[xlabel style,% - fill = \tkz@fillcolor, - \cmd@X@option]}\tkz@temp{\tkz@Xshowgradresult}; -}% - \else% trig > 0 - \FPadd{\tkz@posmin}{\tkz@posmin}{.5}% - \FPdiv\tkz@posmax{\tkz@posmax}{\FPpi}% - \FPmul\tkz@posmax{\tkz@posmax}{\tkz@X@trig}% - \FPdiv\tkz@posmin{\tkz@posmin}{\FPpi}% - \FPmul\tkz@posmin{\tkz@posmin}{\tkz@X@trig}% - \FPround\tkz@posmin{\tkz@posmin}{0}% - \foreach \tz@pos in {\tkz@posmin,...,\tkz@posmax}{% - \tkzPrintFracWithPi{\tz@pos}{\tkz@X@trig} - \FPmul\tz@pospi{\tz@pos}{\FPpi} - \FPdiv\tz@pospi{\tz@pospi}{\tkz@X@trig}% - \protected@edef\tkz@temp{% - \noexpand\path[shift = {(\tz@pospi,0)}]% - (0pt,\tkz@X@tickup)--(0pt,-\tkz@X@tickdn)% - node[xlabel style, - text height = 8pt, - fill = \tkz@fillcolor, - \cmd@X@option]}\tkz@temp{\tkz@Xshowgrad};% - }% end foreach - \fi -\else% frac > 0 -\FPround\tkz@posmin{\tkz@posmin}{0}% - \foreach \tz@pos in {\tkz@posmin,...,\tkz@posmax}{% - \tkzPrintFrac{\tz@pos}{\tkz@X@frac}% - \protected@edef\tkz@temp{% - \noexpand\path[shift = {(\tz@pos,0)}]% - (0pt,\tkz@X@tickup)--(0pt,-\tkz@X@tickdn)% - node[xlabel style, - text height = 8pt, - fill = \tkz@fillcolor, - \cmd@X@option]}\tkz@temp{\tkz@Xshowgrad}% - ;% - }% end foreach -\fi - \iftkz@np\let\numprint\numprint@saved \fi% -\endgroup -} - -%<---------------------------------------------------------------------------> -\pgfkeys{% prob avec space -tkzticksY/.cd, -frac/.code = {\def\tkz@Y@frac{#1}}, -trig/.code = {\def\tkz@Y@trig{#1}}, -step/.code = {\def\tkz@posnext{#1}}, -label options/.code = {\def\cmd@Y@option{#1}}, -np off/.is if = tkz@np, -np off/.default = true, -orig/.is if = tkz@Y@orig, -orig/.default = false, -tickwd/.code = {\global\def\tkz@Y@tickwd{#1}}, -ticklt/.code = {\global\def\tkz@Y@ticklt{#1}}, -tickrt/.code = {\global\def\tkz@Y@tickrt{#1}}, -/tkzticksY/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}}} - \def\tkzLabelY{\pgfutil@ifnextchar[{\tkz@LabelY}{\tkz@LabelY[]}} -\def\tkz@LabelY[#1]{% -\begingroup -\pgfkeys{/tkzticksY/.cd, -frac = 0, -trig = 0, -step = \tkz@init@ystep, -np off = false, -orig = true, -label options = {}, -tickwd = \tkz@init@tickwd, -ticklt = \tkz@init@tickb, -tickrt = \tkz@init@ticka} -\pgfqkeys{/tkzticksY}{#1} -\iftkz@np\let\numprint@saved\numprint % -\let\numprint\relax\fi % - -\FPtrunc\tkz@posmin{\tkz@ya}{\tkz@init@ydec}% -\FPtrunc\tkz@posmax{\tkz@yb}{\tkz@init@ydec}% -\FPtrunc\y@tkzero{0.0000000}{\tkz@init@ydec}% - -\ifnum\tkz@Y@frac=0 - \ifnum\tkz@Y@trig=0 % affichage normal - \FPdiv\tz@posnext{\tkz@posnext}{\tkz@init@ystep} - \FPadd\tz@posnext{\tkz@posmin}{\tz@posnext} - \foreach \tz@pos in {\tkz@posmin,\tz@posnext,...,\tkz@posmax}{% - \FPtrunc\tkz@pos{\tz@pos}{\tkz@init@ydec}% - \FPmul{\ygrad}{\tz@pos}{\tkz@init@ystep}% - \FPadd{\ygrad}{\ygrad}{\tkz@init@yorigine}% - \FPtrunc\ygrad{\ygrad}{\tkz@init@ydec}% - \protected@edef\tkz@temp{% - \noexpand\path[shift = {(0,\tz@pos)}]% - (\tkz@Y@tickrt,0pt)--(-\tkz@Y@ticklt,0pt)% - node[ylabel style, - fill = \tkz@fillcolor, - \cmd@Y@option]}\tkz@temp{\tkz@Yshowgradresult}; -} - \else% trig > 0 - \FPadd{\tkz@posmin}{\tkz@posmin}{.5}% - \FPdiv\tkz@posmax{\tkz@posmax}{\FPpi}% - \FPmul\tkz@posmax{\tkz@posmax}{\tkz@Y@trig}% - \FPdiv\tkz@posmin{\tkz@posmin}{\FPpi}% - \FPmul\tkz@posmin{\tkz@posmin}{\tkz@Y@trig}% - \FPround\tkz@posmin{\tkz@posmin}{0}% - \foreach \tz@pos in {\tkz@posmin,...,\tkz@posmax}{% - \tkzPrintFracWithPi{\tz@pos}{\tkz@Y@trig} - \FPmul\tz@pospi{\tz@pos}{\FPpi} - \FPdiv\tz@pospi{\tz@pospi}{\tkz@Y@trig}% - \protected@edef\tkz@temp{% - \noexpand\path[shift = {(0,\tz@pospi)}]% - (\tkz@Y@tickrt,0pt)--(-\tkz@Y@ticklt,0pt)% - node[ylabel style, - text height = 8pt, - fill = \tkz@fillcolor, - \cmd@Y@option]}\tkz@temp{\tkz@Yshowgrad};% - }% end foreach - \fi -\else% frac > 0 -\FPround\tkz@posmin{\tkz@posmin}{0}% - \foreach \tz@pos in {\tkz@posmin,...,\tkz@posmax}{% - \tkzPrintFrac{\tz@pos}{\tkz@Y@frac}% - \protected@edef\tkz@temp{% - \noexpand\path[shift = {(0,\tz@pos)}]% - (\tkz@Y@tickrt,0pt)--(-\tkz@Y@ticklt,0pt)% - node[ylabel style, - text height = 8pt, - fill = \tkz@fillcolor, - \cmd@Y@option]}\tkz@temp{\tkz@Yshowgrad}% - ;% - }% end foreach -\fi - \iftkz@np\let\numprint\numprint@saved \fi% -\endgroup} -%<--------------------------------------------------------------------------–> -\def\tkzAxeY{\pgfutil@ifnextchar[{\tkz@AxeY}{\tkz@AxeY[]}} -\def\tkz@AxeY[#1]{% -\begingroup - \tkzDrawY[#1] \tkzLabelY[#1] -\endgroup} -%<--------------------------------------------------------------------------> -\newif\if@tkz@swap -\pgfkeys{% prob avec space - tkzAxeXY/.cd, - swap/.is if = @tkz@swap, - swap/.default = true, - /tkzAxeXY/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}}} - -\def\tkzAxeXY{\pgfutil@ifnextchar[{\tkzAxe@XY}{\tkzAxe@XY[]}} -\def\tkzAxe@XY[#1]{% -\pgfkeys{ - /tkzAxeXY/.cd, - swap = false} -\pgfqkeys{/tkzAxeXY}{#1} -\if@tkz@swap -\tkzLabelX[#1]\tkzLabelY[#1]\tkzDrawX[#1]\tkzDrawY[#1] -\else -\tkzDrawX[#1]\tkzDrawY[#1]\tkzLabelX[#1]\tkzLabelY[#1] -\fi} -\def\tkzDrawXY{\pgfutil@ifnextchar[{\tkzDraw@XY}{\tkzDraw@XY[]}} -\def\tkzDraw@XY[#1]{\tkzDrawX[#1]\tkzDrawY[#1]} -\def\tkzLabelXY{\pgfutil@ifnextchar[{\tkzLabel@XY}{\tkzLabel@XY[]}} -\def\tkzLabel@XY[#1]{\tkzLabelX[#1]\tkzLabelY[#1]} -%<--------------------------------------------------------------------------–> -% grid -%<--------------------------------------------------------------------------–> -\newif\if@tkz@gd@sub -\def\tkzRatioLineGrid{0.75} -\def\tkz@gd@sublw{0.4 pt} - - -\pgfkeys{ - /tkzGrid/.cd, - color/.code = {\def\tkz@gd@color{#1}% - \edef\tkz@gd@subcolor{% - \tkz@gd@color!\tkzCoeffSubColor}}, - subxstep/.code = {\def\tkz@gd@subxstep{#1}}, - subystep/.code = {\def\tkz@gd@subystep{#1}}, - ratio/.code = {\def\tkz@gd@ratio{#1}}, - line width/.code = {\edef\tkz@gd@lw{#1} - \edef\tkz@gd@sublw{\tkz@gd@ratio\tkz@gd@lw}}, - sub/.is if = @tkz@gd@sub, - sub/.default = true , - /tkzGrid/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}}} - -\def\tkzGrid{\pgfutil@ifnextchar[{\tkz@Grid}{\tkz@Grid[]}} -\def\tkz@Grid[#1]{\@ifnextchar({\tkz@@Grid[#1]}% - {\tkz@@Grid[#1](\@xa,\@ya)(\@xb,\@yb)}} -\def\tkz@@Grid[#1](#2,#3)(#4,#5){% -\pgfkeys{ - /tkzGrid/.cd, - sub = false, - color = \tkz@grid@color, - ratio = 0.75, - subxstep = \tkz@grid@xstep, - subystep = \tkz@grid@ystep, - line width = \tkz@grid@lw} - \pgfqkeys{/tkzGrid}{#1} - \begingroup - \FPadd{\tkz@gxa}{#2}{-\tkz@init@xorigine} - \FPadd{\tkz@gxb}{#4}{-\tkz@init@xorigine} - \FPadd{\tkz@gya}{#3}{-\tkz@init@yorigine} - \FPadd{\tkz@gyb}{#5}{-\tkz@init@yorigine} - \FPdiv{\tkz@gxa}{\tkz@gxa}{\tkz@init@xstep} - \FPdiv{\tkz@gya}{\tkz@gya}{\tkz@init@ystep} - \FPdiv{\tkz@gxb}{\tkz@gxb}{\tkz@init@xstep} - \FPdiv{\tkz@gyb}{\tkz@gyb}{\tkz@init@ystep} - \if@tkz@gd@sub% - \FPeval\@subxstep{\tkz@gd@subxstep/\tkz@init@xstep}% - \FPeval\@subystep{\tkz@gd@subystep/\tkz@init@ystep}% - \draw [xstep = \@subxstep cm,% - ystep = \@subystep cm,% - color = \tkz@gd@subcolor,% - line width = \tkzRatioLineGrid]% - (\tkz@gxa,\tkz@gya) grid (\tkz@gxb,\tkz@gyb);% - \fi - \draw [color = \tkz@gd@color,% - line width = \tkz@gd@lw]% - (\tkz@gxa,\tkz@gya) grid (\tkz@gxb,\tkz@gyb);% - \endgroup -}% -%<--------------------------------------------------------------------------–> -% repère -%<--------------------------------------------------------------------------–> - -\newif\iftkz@Rep@orig -\pgfkeys{ - /tkzRep/.cd, - line width/.code = {\def\tkz@Rep@lw{#1}}, - xlabel/.code = {\def\tkz@Rep@xlabel{#1}}, - ylabel/.code = {\def\tkz@Rep@ylabel{#1}}, - posxlabel/.code = {\def\tkz@Rep@posxlabel{#1}}, - posylabel/.code = {\def\tkz@Rep@posylabel{#1}}, - xnorm/.code = {\def\tkz@Rep@xnorm{#1}}, - ynorm/.code = {\def\tkz@Rep@ynorm{#1}}, - color/.code = {\def\tkz@Rep@color{#1}}, - colorlabel/.code = {\def\tkz@Rep@colorlabel{#1}}} - % /tkzRep/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - % \pgfkeysalso{\searchname/.try=#1, - % /tikz/\searchname/.retry=#1}}} -%<--------------------------------------------------------------------------–> -\def\tkzRep{\pgfutil@ifnextchar[{\tkz@Rep}{% - \tkz@Rep[]}} -\def\tkz@Rep[#1]{% -\pgfkeys{ - /tkzRep/.cd, -line width = \tkz@sur@lw, -xlabel = $\vec{\imath}$, -ylabel = $\vec{\jmath}$, -posxlabel = {\tkz@sur@posxlabel}, -posylabel = {\tkz@sur@posylabel}, -xnorm = 1, -ynorm = 1, -color = \tkz@sur@color,% remove ? -colorlabel = \tkz@sur@colorlabel}% remove ? -\pgfqkeys{/tkzRep}{#1} -\begingroup - \protected@edef\tkz@temp{% - \noexpand\draw [line width=\tkz@Rep@lw,color=\tkz@Rep@color,rep style]% - (0,0) to node[\tkz@Rep@posylabel,color = \tkz@Rep@colorlabel]}\tkz@temp% - {\tkz@Rep@ylabel}(0,\tkz@Rep@ynorm); - \protected@edef\tkz@temp{% - \noexpand \draw [line width=\tkz@Rep@lw,color=\tkz@Rep@color,rep style]% - (0,0) to node[\tkz@Rep@posxlabel,color = \tkz@Rep@colorlabel]}\tkz@temp% - {\tkz@Rep@xlabel}(\tkz@Rep@xnorm,0); -\endgroup -} \def\tkzAddName{\pgfutil@ifnextchar[{\tkz@AddName}{\tkz@AddName[]}} \def\tkz@AddName[#1]#2{% \node[above left,#1] at (\pgf@path@lastx,\pgf@path@lasty){#2}; }% +%<--------------------------------------------------------------------------–> +\makeatother \endinput \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-math.tex b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-math.tex index a4f46d22378..c6579e09029 100644 --- a/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-math.tex +++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-math.tex @@ -1,223 +1,15 @@ +% tkz-tools-math.tex % Copyright 2011 by Alain Matthes -% % This file may be distributed and/or modified -% % 1. under the LaTeX Project Public License and/or % 2. under the GNU Public License. - - -\def\fileversion{1.16 d} -\def\filedate{2018/09/19} - - - -% Objet : outils mathématiques pour la géométrie euclideienne avec pgf/tikz -% utilisable de préférence avec un repère orthonormé et le cm comme unité -% utile pour la compatibilité avec pgf 2 -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -% Duplicate Length à revoir pas de pt pas de global -% ||v(CN)||= ||v(AB)|| et v(CN) colineaire à v(CD) -% A-->#1 B-->#2 C-->#3 D-->#4 N-->#5 ????? -%<--------------------------------------------------------------------------–> -\def\tkzDuplicateLen(#1,#2)(#3,#4){% -\begingroup - \tkzCalcLength(#1,#2)\tkzGetLength{tkz@firstlen}% - \tkzCalcLength(#3,#4)\tkzGetLength{tkz@secondlen}% - \FPdiv\tkz@ratio{\tkz@firstlen}{\tkz@secondlen}% - \tkz@VecKCoLinear[\tkz@ratio](#3,#4,#3){tkzPointResult}% -\endgroup -} -\let\tkzDuplicateSegment\tkzDuplicateLen %<--------------------------------------------------------------------------–> -% Coordonnées d'un vecteur (couple de points) -% Deux points A et B donc un vecteur on récupère les coordonnées de v(AB) -% en cm -% tkzGetVecCoord en cm ou en pt ??? -%<--------------------------------------------------------------------------–> -%result in #3x et #3y #1 et #2 sont les points -% passage en cm avec fp ? -\def\tkzGetVectxy(#1,#2)#3{% -\begingroup -\pgfpointdiff{\pgfpointanchor{#1}{center}}% - {\pgfpointanchor{#2}{center}}% -\pgfmathparse{\pgf@sys@tonumber{\pgf@x}/28.45274}% -\global\let\tkzresultx\pgfmathresult -\pgfmathparse{\pgf@sys@tonumber{\pgf@y}/28.45274}% -\global\let\tkzresulty\pgfmathresult -\global\expandafter\edef\csname #3x\endcsname{\tkzresultx}% -\global\expandafter\edef\csname #3y\endcsname{\tkzresulty}% -\endgroup -} -\let\tkzGetVecCoord\tkzGetVectxy -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -\def\tkz@numv{0} -\pgfkeys{/tkzdefv/.cd, -K/.code = {\pgfmathparse{#1}\global\def\tkz@ratio{\pgfmathresult}}, -colinear/.code args = {at #1}{\global\def\tkz@numv{0}% - \global\def\tkz@frompoint{#1}}, -orthogonal/.code = {\global\def\tkz@numv{1}}, -linear/.code = {\global\def\tkz@numv{2}}\pgfmathparse{#1}, -normed orthogonal/.code = {\global\def\tkz@numv{3}}, -normed linear/.code = {\global\def\tkz@numv{4}}, -} -\def\tkzDefVector[#1](#2,#3)#4{% -\begingroup -\pgfkeys{/tkzdefv/.cd,K=1} -\pgfqkeys{/tkzdefv}{#1} -\ifcase\tkz@numv% - % first case 0 - \tkzDefVectorfrom[\tkz@ratio](#2,#3){#4} - \or% 1 - \tkz@VecKOrth[\tkz@ratio](#2,#3){#4} - \or% 2 - \tkz@VecK[\tkz@ratio](#2,#3){#4} - \or% 3 - \tkz@VecKOrthNorm[\tkz@ratio](#2,#3){#4} - \or% 4 - \tkz@VecKCoLinear[#1](#2,#3)#4 - \fi -\endgroup -} - -\def\tkzDefVectorfrom[#1](#2,#3)#4{% -\begingroup - \pgfpointdiff{\pgfpointanchor{#2}{center}}% - {\pgfpointanchor{#3}{center}}% - \pgf@xa=\pgf@x% - \pgf@ya=\pgf@y% - \path[coordinate](\tkz@frompoint)--+(\tkz@ratio\pgf@xa,% - \tkz@ratio\pgf@ya) coordinate (#4); -\endgroup -} -%<--------------------------------------------------------------------------–> -% VecKCoLinear CN = K x AB #1 pt #2 pt #3 pt #4 nb #5 pt result -% il faut modifier cette macro : on supprime #3 pour la colinéarité -% Il suffit d'utiliser Replicate ou Duplicate coeff dans #1 -% v(CD)=#1 x v(AB) #1 le coeff; #2-->A #3-->B #4-->C #5-->N -%<--------------------------------------------------------------------------–> -\def\tkzVecKCoLinear{\pgfutil@ifnextchar[{\tkz@VecKCoLinear}{\tkz@VecKCoLinear[1]}} -\def\tkz@VecKCoLinear[#1](#2,#3,#4)#5{% -\begingroup - \pgfpointdiff{\pgfpointanchor{#2}{center}}% - {\pgfpointanchor{#3}{center}}% - \pgf@xa=\pgf@x% - \pgf@ya=\pgf@y% - \pgfmathparse{#1}\edef\tkz@coeff{\pgfmathresult} - \path[coordinate](#4)--+(\tkz@coeff\pgf@xa,\tkz@coeff\pgf@ya)% - coordinate (#5);% -\endgroup -}% -%<--------------------------------------------------------------------------–> -% v(AN)=#1 x v(AB) -% #1 le coeff; #2--> A #3--> B #4-->N tq #4-#2 = #1*(#3-#2) -%<--------------------------------------------------------------------------–> -\pgfkeys{ - /tkzscalev/.cd, - ratio/.code = {\pgfmathparse{#1}\global\edef\tkz@ratio{\pgfmathresult}} - } -\def\tkzScaleVector{\pgfutil@ifnextchar[{\tkz@ScaleVector}{% - \tkz@ScaleVector[]}} -\def\tkz@ScaleVector[#1](#2,#3)#4{% -\begingroup -\pgfkeys{/tkzscalev/.cd,ratio=-1} -\pgfqkeys{/tkzscalev}{#1} - \pgfpointdiff{\pgfpointanchor{#2}{center}}% - {\pgfpointanchor{#3}{center}}% - \pgf@xa=\pgf@x% - \pgf@ya=\pgf@y% - \path[coordinate](#2)--++(\pgf@xa *\tkz@ratio,\pgf@ya *\tkz@ratio)% - coordinate (#4);% -\endgroup -}% -%<--------------------------------------------------------------------------–> -% Outils pour les vecteurs -%<--------------------------------------------------------------------------–> -% ce sont des outils élémentaires qui à partir de deux points en définissent -% un troisième -% #1 si c'est une option alors c'est un nombre réel -% #2 et #3 sont deux points -% #4 est le nom du point qui résulte de la transformation -% exemple : \tkzVecKNorm (A,B){C} définit un point C tel que AC = 1 et C est % % un point de la droite (AC). #1 peut être négatif - -%<--------------------------------------------------------------------------–> -% 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 -%<--------------------------------------------------------------------------–> -\def\tkzVecKNorm{\pgfutil@ifnextchar[{\tkz@VecKNorm}{\tkz@VecKNorm[1]}} -\def\tkz@VecKNorm[#1](#2,#3)#4{% -\begingroup - \tkzpointnormalised{% - \pgfpointdiff{\pgfpointanchor{#2}{center}} - {\pgfpointanchor{#3}{center}}} - \pgf@xa=\pgf@x\relax% - \pgf@ya=\pgf@y\relax% - \pgfmathparse{#1}\edef\tkz@coeff{\pgfmathresult} - \FPmul\tkz@coeff{28.45274}{\tkz@coeff} - \FPmul\tkz@x{\tkz@coeff}{\pgf@sys@tonumber{\pgf@xa}} - \FPmul\tkz@y{\tkz@coeff}{\pgf@sys@tonumber{\pgf@ya}} - \path[coordinate](#2)--++(\tkz@x pt,\tkz@y pt)% - coordinate (#4);% -\endgroup -}% -%<--------------------------------------------------------------------------–> -% v(AN)=#1 x v(AB) -% #1 le coeff; #2--> A #3--> B #4-->N tq #4-#2 = #1*(#3-#2) -%<--------------------------------------------------------------------------–> -\def\tkzVecK{\pgfutil@ifnextchar[{\tkz@VecK}{\tkz@VecK[1]}} -\def\tkz@VecK[#1](#2,#3)#4{% -\begingroup - \pgfpointdiff{\pgfpointanchor{#2}{center}}% - {\pgfpointanchor{#3}{center}}% - \pgf@xa=\pgf@x% - \pgf@ya=\pgf@y% - \pgfmathparse{#1}\edef\tkz@coeff{\pgfmathresult} - \path[coordinate](#2)--++(\pgf@xa *\tkz@coeff,% - \pgf@ya *\tkz@coeff)% - coordinate (#4);% -\endgroup -}% -%<--------------------------------------------------------------------------–> -% tkzVector K Orth coeff dans #1 -% v(AN) perp v(AB) v(AB) v(AN) sens direct cercle trigo -% ||v(AN)||=||v(AB)|| -%<--------------------------------------------------------------------------–> -\def\tkzVecKOrth{\pgfutil@ifnextchar[{\tkz@VecKOrth}{\tkz@VecKOrth[1]}} -\def\tkz@VecKOrth[#1](#2,#3)#4{% -\begingroup - \pgfpointdiff{\pgfpointanchor{#2}{center}}% - {\pgfpointanchor{#3}{center}}% - \pgf@xa=-\pgf@y% - \pgf@ya=\pgf@x% - \pgfmathparse{#1}\edef\tkz@coeff{\pgfmathresult} - \path[coordinate](#2)--++(\tkz@coeff\pgf@xa,\tkz@coeff\pgf@ya)% - coordinate (#4);% -\endgroup -}% -%<--------------------------------------------------------------------------–> -% tkzVecKOrthNorm coeff dans #1 -% v(AN) perp v(AB) v(AB) v(AN) sens direct cercle trigo -% ||v(AN||=1 si #1 est vide ou =1 sinon ||v(AN||=K -%<--------------------------------------------------------------------------–> -\def\tkzVecKOrthNorm{\pgfutil@ifnextchar[{\tkz@VecKOrthNorm}% - {\tkz@VecKOrthNorm[1]}} -\def\tkz@VecKOrthNorm[#1](#2,#3)#4{% -\begingroup - \tkzpointnormalised{\pgfpointdiff{\pgfpointanchor{#2}{center}}% - {\pgfpointanchor{#3}{center}}} - \pgf@xa=-\pgf@y% - \pgf@ya=\pgf@x% - \FPmul\tkz@coeff{28.45274}{#1} - \FPmul\tkz@x{\tkz@coeff}{\pgf@sys@tonumber{\pgf@xa}} - \FPmul\tkz@y{\tkz@coeff}{\pgf@sys@tonumber{\pgf@ya}} - \path[coordinate](#2)--++(\tkz@x pt,\tkz@y pt)% - coordinate (#4);% -\endgroup -}% -%<--------------------------------------------------------------------------–> +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c tkz-tools-math.tex} +\makeatletter +%<--------------------------------------------------------------------------> % \tkzpointnormalised normalise un point A-->A' tq ||v(OA')=1|| -% équivalent de \pgfpointnormalised avec fp +% équivalent de \pgfpointnormalised avec fp % example % \tkzpointnormalised{% % \pgfpointdiff{\pgfpointanchor{A}{center}} @@ -226,463 +18,100 @@ normed linear/.code = {\global\def\tkz@numv{4}}, % or % \pgf@x=1 cm % \pgf@y=12 cm -% \tkzpointnormalised{} %<--------------------------------------------------------------------------–> +% \tkzpointnormalised{} +%<-------------------------------------------------------------------------- \def\tkzpointnormalised#1{% \pgf@process{#1}% -\FPmul{\tkz@sx}{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@x}} -\FPmul{\tkz@sy}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@y}} -\FPadd{\tkz@sxy}{\tkz@sx}{\tkz@sy} -\FProot{\tkz@den}{\tkz@sxy}{2} -\FPdiv{\tkz@coordx}{\pgf@sys@tonumber{\pgf@x}}{\tkz@den} -\FPround{\tkz@coordx}{\tkz@coordx}{5} -\FPdiv{\tkz@coordy}{\pgf@sys@tonumber{\pgf@y}}{\tkz@den} -\FPround{\tkz@coordy}{\tkz@coordy}{5} +\edef\tkz@den{\fpeval{sqrt((\pgf@x)^2+(\pgf@y)^2)}} +\edef\tkz@coordx{\fpeval{\pgf@x/\tkz@den}} +\edef\tkz@coordx{\fpeval{round(\tkz@coordx,5)}} +\edef\tkz@coordy{\fpeval{\pgf@y/\tkz@den}} +\edef\tkz@coordy{\fpeval{round(\tkz@coordy,5)}} \pgf@x = \tkz@coordx pt \pgf@y = \tkz@coordy pt } -%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------> % restaure and save length \def\tkz@save@length{% \global\let\tkz@temp@length\tkzLengthResult}% \def\tkz@restore@length{% \global\let\tkzLengthResult\tkz@temp@length }% -%<--------------------------------------------------------------------------–> -%<--------------------------------------------------------------------------–> -% \tkzCalcLength Distance entre deux points en pt ou en cm avec FP +%<--------------------------------------------------------------------------> +% \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 -%<--------------------------------------------------------------------------–> - -\newif\iftkzLengthIncm -\pgfkeys{ -DefVecLen/.cd, +% option cm le résultat est en cm sinon en pt +%<--------------------------------------------------------------------------> +\pgfkeys{@CalcLength/.cd, cm/.is if = tkzLengthIncm, cm/.default = true} \def\tkzCalcLength{\pgfutil@ifnextchar[{\tkz@CalcLength}{\tkz@CalcLength[]}} \def\tkz@CalcLength[#1](#2,#3){% -\pgfkeys{DefVecLen/.cd, cm = false} -\pgfqkeys{/DefVecLen}{#1}% +\pgfkeys{@CalcLength/.cd, cm = false} +\pgfqkeys{/@CalcLength}{#1}% \begingroup \tkz@@CalcLength(#2,#3){tkzLengthResult} -\iftkzLengthIncm - \FPdiv\tkzFPMathLen{\tkzFPMathLen}{28.45274} - \FPround\tkzFPMathLen\tkzFPMathLen5\relax% - \global\let\tkzLengthResult\tkzFPMathLen +\iftkzLengthIncm + \pgfmathparse{\tkz@xfpMathLen pt/1cm} + \edef\tkz@xfpMathLen{\fpeval{round(\pgfmathresult,5)}} + \global\let\tkzLengthResult\tkz@xfpMathLen \fi \endgroup }% \def\tkz@@CalcLength(#1,#2)#3{% \pgfpointdiff{\pgfpointanchor{#1}{center}}% {\pgfpointanchor{#2}{center}}% -\pgf@xa=\pgf@x% -\pgf@ya=\pgf@y% -\FPeval\tkz@temp@a{\pgfmath@tonumber{\pgf@xa}}% -\FPeval\tkz@temp@b{\pgfmath@tonumber{\pgf@ya}}% -\FPeval\tkz@temp@sum{(\tkz@temp@a*\tkz@temp@a+\tkz@temp@b*\tkz@temp@b)}% -\FProot{\tkzFPMathLen}{\tkz@temp@sum}{2}% -\FPround\tkzFPMathLen\tkzFPMathLen5\relax -\global\expandafter\edef\csname #3\endcsname{\tkzFPMathLen} +\edef\tkz@xfpMathLen{\fpeval{sqrt((\pgf@x)^2+(\pgf@y)^2)}} +\edef\tkz@xfpMathLen{\fpeval{round(\tkz@xfpMathLen,5)}} +\global\expandafter\edef\csname #3\endcsname{\tkz@xfpMathLen} } -%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------> \def\tkzGetLength#1{% \global\expandafter\edef\csname #1\endcsname{\tkzLengthResult}} -%<--------------------------------------------------------------------------–> -% \tkzpttocm passage de pt à cm div par 28.45274 -%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------> +% \tkzpttocm passage de pt   cm div par 28.45274 +%<--------------------------------------------------------------------------> \def\tkzpttocm(#1)#2{% \begingroup - \FPdiv\tkz@mathresult{#1}{28.45274} - \FPround\tkz@mathresult\tkz@mathresult5\relax% - \global\let\tkz@mathresult\tkz@mathresult - \global\expandafter\edef\csname #2\endcsname{\tkz@mathresult}% + \pgfmathparse{#1/1cm} + \edef\tkz@mathresult{\fpeval{round(\pgfmathresult,5)}} + \global\let\tkz@mathresult\tkz@mathresult + \global\expandafter\edef\csname #2\endcsname{\tkz@mathresult}% \endgroup }% -%<--------------------------------------------------------------------------–> -% \tkzcmtopt passage de cm à pt mul par 28.45274 %<--------------------------------------------------------------------------– +%<--------------------------------------------------------------------------> +% \tkzcmtopt passage de cm   pt mul par 28.45274 +%<-------------------------------------------------------------------------- \def\tkzcmtopt(#1)#2{% \begingroup - \FPmul\tkz@mathresult{#1}{28.45274} - \FPround\tkz@mathresult\tkz@mathresult5\relax% - \global\let\tkz@mathresult\tkz@mathresult -\global\expandafter\edef\csname #2\endcsname{\tkz@mathresult}% + \pgfmathparse{#1/1pt} + \edef\tkz@mathresult{\fpeval{round(\pgfmathresult,5)}} + \global\let\tkz@mathresult\tkz@mathresult + \global\expandafter\edef\csname #2\endcsname{\tkz@mathresult}% \endgroup }% -%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------> % Slope -%<--------------------------------------------------------------------------–> +%<--------------------------------------------------------------------------> \def\tkzFindSlope{\tkz@FindSlope} \def\tkz@FindSlope(#1,#2)#3{% - \begingroup - \tkzpointnormalised{\pgfpointdiff{\pgfpointanchor{#1}{center}}% - {\pgfpointanchor{#2}{center}}} - \tkz@ax=\pgf@x\relax% - \tkz@ay=\pgf@y\relax% - \FPdiv{\tkz@Slope}{\pgfmath@tonumber{\tkz@ay}}{\pgfmath@tonumber{\tkz@ax}} - \FPround{\tkz@Slope}{\tkz@Slope}{5} +\begingroup + \tkzpointnormalised{\pgfpointdiff{\pgfpointanchor{#1}{center}}% + {\pgfpointanchor{#2}{center}}} + \edef\tkz@Slope{\fpeval{\pgfmath@tonumber{\pgf@y}/\pgfmath@tonumber{\pgf@x}}} + \edef\tkz@Slope{\fpeval{round(\tkz@Slope,5)}} \global\expandafter\edef\csname #3\endcsname{\tkz@Slope}% \endgroup } -%<--------------------------------------------------------------------------–> -%<----------------– for compatibility --------------------------------------–> -%<--------------------------------------------------------------------------–> -\def\tkzmathanglebetweenpoints#1#2{% -\begingroup - \pgf@process{\pgfpointdiff{#1}{#2}}% - % - % First approximate the angle of the external point... - % - \pgf@xa\pgf@x% - \pgf@ya\pgf@y% - \pgf@xb\pgf@x% - \pgf@yb\pgf@y% - \ifdim\pgf@xa<0pt\relax% - \pgf@xa-\pgf@xa% - \fi - \ifdim\pgf@ya<0pt\relax% - \pgf@ya-\pgf@ya% - \fi - \ifdim\pgf@ya>\pgf@xa% - \pgf@x\pgf@xa% - \pgf@y\pgf@ya% - \else - \pgf@x\pgf@ya% - \pgf@y\pgf@xa% - \fi - \ifdim\pgf@y=0pt\relax% - \pgf@x0pt% - \else - \FPdiv\pgfmathresult{1}{\pgfmath@tonumber{\pgf@y}} - \FPround\pgfmathresult\pgfmathresult5\relax% - \pgf@x\pgfmathresult\pgf@x% - \fi - \multiply\pgf@x1000\relax% - \afterassignment\pgfmath@gobbletilpgfmath@% - \expandafter\c@pgf@counta\the\pgf@x\relax\pgfmath@% -\expandafter\pgf@x\csname pgfmath@atan@\the\c@pgf@counta\endcsname pt\relax% - \ifdim\pgfmath@ya>\pgfmath@xa\relax% - \pgf@x-\pgf@x% - \advance\pgf@x90pt% - \fi - \ifdim\pgf@xb<0pt% - \ifdim\pgf@yb>0pt% - \pgf@x-\pgf@x% - \fi - \advance\pgf@x180pt\relax% - \else - \ifdim\pgf@yb<0pt% - \pgf@x-\pgf@x% - \advance\pgf@x360pt\relax% - \fi - \fi - \ifdim\pgf@x>180pt% - \advance\pgf@x-360pt\relax% - \fi - \pgfmath@returnone\pgf@x% - \endgroup -} - -% \tkzmathrotatepointaround -% -% Rotate point #1 about point #2 by #3 degrees. -% -\def\tkzmathrotatepointaround#1#2#3{% - \pgf@process{% - \pgf@process{#1}% - \pgf@xc=\pgf@x% - \pgf@yc=\pgf@y% - \pgf@process{#2}% - \pgf@xa\pgf@x% - \pgf@ya\pgf@y% - \pgf@xb\pgf@x% - \pgf@yb\pgf@y% - \pgf@x=\pgf@xc% - \pgf@y=\pgf@yc% - \advance\pgf@x-\pgf@xa% - \advance\pgf@y-\pgf@ya% - \pgfmathsetmacro\tkz@angle{#3}% - \pgfmathsin@{\tkz@angle}% - \let\sineangle\pgfmathresult% - \pgfmathcos@{\tkz@angle}% - \let\cosineangle\pgfmathresult% - \pgf@xa\cosineangle\pgf@x% - \advance\pgf@xa-\sineangle\pgf@y% - \pgf@ya\sineangle\pgf@x% - \advance\pgf@ya\cosineangle\pgf@y% - \pgf@x\pgf@xb% - \pgf@y\pgf@yb% - \advance\pgf@x\pgf@xa% - \advance\pgf@y\pgf@ya% - }% -} - - -% \tkzmathanglebetweenlines -% -% Calculate the clockwise angle between a line from point #1 -% to point #2 and a line from #3 to point #4. -% -\def\tkzmathanglebetweenlines#1#2#3#4{% - \begingroup - \tkzmathanglebetweenpoints{#1}{#2}% - \let\firstangle\pgfmathresult% - \tkzmathanglebetweenpoints{#3}{#4}% - \let\secondangle\pgfmathresult% - \ifdim\firstangle pt>\secondangle pt\relax% - \pgfmathadd@{\secondangle}{360}% - \let\secondangle\pgfmathresult% - \fi - \pgfmathsubtract@{\secondangle}{\firstangle}% - \pgfmath@smuggleone\pgfmathresult% - \endgroup -} -% \pgfmathpointreflectalongaxis -% -% Reflects point #2 around an axis centered on #2 at an angle #3. -% -\def\tkzmathreflectpointalongaxis#1#2#3{% - \pgf@process{% - \pgfmathanglebetweenpoints{#2}{#1}% - \pgfmath@tempdima\pgfmathresult pt\relax% - \pgfmathparse{#3}% - \advance\pgfmath@tempdima-\pgfmathresult pt\relax% - \pgfmath@tempdima-2.0\pgfmath@tempdima% - \pgfmathrotatepointaround{#1}{#2}{\pgfmath@tonumber{\pgfmath@tempdima}}% - }% -} - - -% \pgfmathpointintersectionoflineandarc -% -% A bit experimental at the moment: -% -% Locates the point where a line crosses an eliptical arc. If the line -% does not cross the arc, a meaningless point will result. -% -% #1 the point of the line on the "convex" side of the arc. -% #2 the point of the line on the "concave" side of the arc. -% #3 the center of the eliptical arc. -% #4 start angle of the arc. -% #5 end angle of the arc. -% #6 radii of the arc. -% -\def\tkzmathpointintersectionoflineandarc#1#2#3#4#5#6{% - \pgf@process{% - % - % Get the required angle. - % - \pgfmathanglebetweenpoints{#2}{#1}% - \let\x\pgfmathresult% - % - % Get the radii of the arc. - % - \pgfmath@in@{and }{#6}% - \ifpgfmath@in@% - \pgf@polar@#6\@@% - \else - \pgf@polar@#6 and #6\@@% - \fi - \edef\xarcradius{\the\pgf@x}% - \edef\yarcradius{\the\pgf@y}% - % - % Get the start and end angles of the arc... - % - \pgfmathsetmacro\s{#4}% - \pgfmathsetmacro\e{#5}% - % - % ...and also with rounding. - % - \pgfmathmod@{\s}{360}% - \ifdim\pgfmathresult pt<0pt\relax% - \pgfmathadd@{\pgfmathresult}{360}% - \fi - \let\ss\pgfmathresult% - \pgfmathmod@{\e}{360}% - \ifdim\pgfmathresult pt<0pt\relax% - \pgfmathadd@{\pgfmathresult}{360}% - \fi - \let\ee\pgfmathresult% - % - % Hackery for when arc straddles zero. - % - \ifdim\ee pt<\ss pt\relax% - \pgfmathadd@{\x}{180}% - \pgfmathmod@{\pgfmathresult}{360}% - \let\x\pgfmathresult% - \fi - \def\m{360}% Measure of nearness. - \pgfmathadd@{\s}{\e}% - \pgfmathdivide@{\pgfmathresult}{2}% - \let\n\pgfmathresult% The best estimate (default to middle of arc). - \pgfmathloop% - \pgfmathadd@{\s}{\e}% - \pgfmathdivide@{\pgfmathresult}{2}% - \let\p\pgfmathresult% - \ifdim\p pt=\s pt\relax% - \else - \tkzmathanglebetweenpoints{#2}{% - \pgfpointadd{#3}{% - \pgf@x\xarcradius\relax% - \pgfmathcos@{\p}% - \pgf@x\pgfmathresult\pgf@x% - \pgf@y\yarcradius\relax% - \pgfmathsin@{\p}% - \pgf@y\pgfmathresult\pgf@y% - }% - }% - % - % Hackery for when arc straddles zero. - % - \ifdim\ee pt<\ss pt\relax% - \pgfmathadd@{\pgfmathresult}{180}% - \pgfmathmod@{\pgfmathresult}{360}% - \fi - \let\q\pgfmathresult% - % - % More hackery... - % - \ifdim\x pt>335pt\relax% - \ifdim\q pt<45pt\relax% - \pgfmathadd@{\q}{360}% - \let\q\pgfmathresult% - \fi - \fi - \ifdim\x pt=\q pt% Found it! - \pgfmathbreakloop% Breaks after current iteration is complete. - \else - \ifdim\x pt<\q pt\relax% - \let\e\p% - \else - \let\s\p% - \fi - \fi - \pgfmathsubtract@{\x}{\q}% - \pgfmathabs@{\pgfmathresult}% - % - % Save the estimate if it is better than any previous estimate. - % - \ifdim\pgfmathresult pt<\m pt\relax% - \let\m\pgfmathresult% - \let\n\p% - \fi - \repeatpgfmathloop% - \pgfpointadd{#3}{\pgfpointpolar{\n}{\xarcradius and \yarcradius}}% - }% -} - -% \tkzmathangleonellipse -% -% Find the angle corresponding to a point on the border of an ellispe. -% -% #1 - the point on the border. -% #2 - the radii of the ellipse. -% -\def\tkzmathangleonellipse#1#2{% - \begingroup - \pgfmath@in@{and }{#2}% - \ifpgfmath@in@% - \pgf@polar@#2\@@% - \else - \pgf@polar@#2 and #2\@@% - \fi - \pgf@xa\pgf@x% - \pgf@ya\pgf@y% - \pgf@process{#1}% - \ifdim\pgf@x=0pt\relax% - \pgfutil@tempdima1pt\relax% - \else - \pgfutil@tempdima\pgf@x% -%\pgfmathdivide@{\pgfmath@tonumber{\pgf@xa}}{\pgfmath@tonumber{\pgfutil@tempdima}}% -\FPdiv\pgfmathresult{\pgfmath@tonumber{\pgf@xa}}{\pgfmath@tonumber{\pgfutil@tempdima}} -\FPround\pgfmathresult\pgfmathresult5\relax% - \pgfutil@tempdima\pgfmathresult pt\relax% - \fi - \ifdim\pgf@y=0pt\relax% - \pgfutil@tempdima1pt\relax% - \else - % \pgfmathdivide@{\pgfmath@tonumber{\pgf@y}}{\pgfmath@tonumber{\pgf@ya}}% - \FPdiv\pgfmathresult{\pgfmath@tonumber{\pgf@y}}{% - \pgfmath@tonumber{\pgf@ya}}% - \FPround\pgfmathresult\pgfmathresult5\relax% - \pgfutil@tempdima\pgfmathresult\pgfutil@tempdima% - \pgfmathatan@{\pgfmath@tonumber{\pgfutil@tempdima}}% - \fi - % - \pgfutil@tempdima\pgfmathresult pt\relax% - \ifdim\pgfutil@tempdima<0pt\relax% - \advance\pgfutil@tempdima360pt\relax% - \fi - \ifdim\pgf@x<0pt\relax% - \ifdim\pgf@y=0pt\relax% - \pgfutil@tempdima180pt\relax% - \else - \ifdim\pgf@y<0pt\relax% - \advance\pgfutil@tempdima180pt\relax% - \else - \advance\pgfutil@tempdima-180pt\relax% - \fi - \fi - \else - \ifdim\pgf@x=0pt\relax% - \ifdim\pgf@y<0pt\relax% - \pgfutil@tempdima270pt\relax% - \else - \pgfutil@tempdima90pt\relax% - \fi - \else - \ifdim\pgf@y=0pt\relax% - \pgfutil@tempdima0pt\relax% - \fi - \fi - \fi - \pgfmath@returnone\pgfutil@tempdima% - \endgroup -} - -\def\tkzpointborderellipse#1#2{% - \pgf@process{#2}% - \pgf@xa=\pgf@x% - \pgf@ya=\pgf@y% - \ifdim\pgf@xa=\pgf@ya% circle. that's easy! - \pgf@process{\pgfpointnormalised{#1}}% - \pgf@x=\pgf@sys@tonumber{\pgf@xa}\pgf@x% - \pgf@y=\pgf@sys@tonumber{\pgf@xa}\pgf@y% - \else - \ifdim\pgf@xa<\pgf@ya% - % Ok, first, let's compute x/y: - \c@pgf@countb=\pgf@ya% - \divide\c@pgf@countb by65536\relax% - \divide\pgf@x by\c@pgf@countb% - \divide\pgf@y by\c@pgf@countb% - \pgf@xc=\pgf@x% - \pgf@yc=8192pt% - \pgf@y=.125\pgf@y% - \c@pgf@countb=\pgf@y% - \divide\pgf@yc by\c@pgf@countb% - \pgf@process{#1}% - \pgf@y=\pgf@sys@tonumber{\pgf@yc}\pgf@y% - \pgf@y=\pgf@sys@tonumber{\pgf@xc}\pgf@y% - \pgf@process{\pgfpointnormalised{}}% - \pgf@x=\pgf@sys@tonumber{\pgf@xa}\pgf@x% - \pgf@y=\pgf@sys@tonumber{\pgf@ya}\pgf@y% - \else - % Ok, now let's compute y/x: - \c@pgf@countb=\pgf@xa% - \divide\c@pgf@countb by65536\relax% - \divide\pgf@x by\c@pgf@countb% - \divide\pgf@y by\c@pgf@countb% - \pgf@yc=\pgf@y% - \pgf@xc=8192pt% - \pgf@x=.125\pgf@x% - \c@pgf@countb=\pgf@x% - \divide\pgf@xc by\c@pgf@countb% - \pgf@process{#1}% - \pgf@x=\pgf@sys@tonumber{\pgf@yc}\pgf@x% - \pgf@x=\pgf@sys@tonumber{\pgf@xc}\pgf@x% - \pgf@process{\pgfpointnormalised{}}% - \pgf@x=\pgf@sys@tonumber{\pgf@xa}\pgf@x% - \pgf@y=\pgf@sys@tonumber{\pgf@ya}\pgf@y% - \fi - \fi -} +% Schrodinger's cat idea 03/01/20 +\tikzset{xfp/.code={% +\pgfmathdeclarefunction*{veclen}{2}{% +\begingroup% + \pgfmath@x##1pt\relax% + \pgfmath@y##2pt\relax% + \edef\tkz@xfpMathLen{\fpeval{sqrt((\pgf@x)^2+(\pgf@y)^2)}} + \pgfmath@returnone\tkz@xfpMathLen pt% +\endgroup% +}}} + \makeatother \endinput \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-misc.tex b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-misc.tex index 1b77e7b958b..e47c7d8a5c2 100644 --- a/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-misc.tex +++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-misc.tex @@ -1,109 +1,20 @@ +% tkz-tools-misc.tex % Copyright 2011 by Alain Matthes -% % This file may be distributed and/or modified -% % 1. under the LaTeX Project Public License and/or % 2. under the GNU Public License. - - -\def\fileversion{1.16 d} -\def\filedate{2018/09/19} - - -%<--------------------------------------------------------------------------–> -% tkzText -%<--------------------------------------------------------------------------–> -\newif\iftkz@node\tkz@nodefalse - -\def\tkz@parsenode#1{% -\tkz@getvirg#1,\@nil -\iftkz@node -\else - \tkz@getfromcart#1\@nil -\fi -} -\def\tkz@getvirg#1,#2\@nil{% -\ifx\tkzempty#2\tkzempty% - \tkz@nodetrue -\else - \tkz@nodefalse -\fi -} - - -\def\tkzText{\pgfutil@ifnextchar[{\tkz@Text}{\tkz@Text[]}} -\def\tkz@Text[#1](#2)#3{% - \begingroup - \tkz@parsenode{#2} - \iftkz@node \node[#1] at (#2){#3}; - \else - \FPadd{\ptxa}{\tkz@absc}{-\tkz@init@xorigine} - \FPadd{\ptya}{\tkz@ord}{-\tkz@init@yorigine} - \FPdiv{\ptxa}{\ptxa}{\tkz@init@xstep} - \FPdiv{\ptya}{\ptya}{\tkz@init@ystep} - \node[#1] at (\ptxa,\ptya){#3};% - \fi -\endgroup -}% -% %<--------------------------------------------------------------------------–> -% % légende -% %<--------------------------------------------------------------------------–> -\newif\iftkz@legend@line -\pgfkeys{ -/tkzlegend/.cd, -line/.is if = tkz@legend@line, -line/.default = true, -/tkzlegend/.unknown/.code = {\let\searchname=\pgfkeyscurrentname - \pgfkeysalso{\searchname/.try=#1, - /tikz/\searchname/.retry=#1}} -} - -\def\tkzLegend{\pgfutil@ifnextchar[{\tkz@Legend}{\tkz@Legend[]}} -\def\tkz@Legend[#1](#2,#3)#4{% -\pgfkeys{/tkzlegend/.cd, -line=false} - \pgfqkeys{/tkzlegend}{#1} - \begingroup -\c@pgfmath@counta=0 % -\FPadd{\ptxa}{#2}{-\tkz@init@xorigine} -\FPadd{\ptya}{#3}{-\tkz@init@yorigine} -\FPdiv{\ptxa}{\ptxa}{\tkz@init@xstep} -\FPdiv{\ptya}{\ptya}{\tkz@init@ystep} -\node[/tkzlegend/.cd,#1] at (\ptxa,\ptya) {% -\begin{tikzpicture} - \foreach \motif/\size/\col/\mtext in {#4}{% - \iftkz@legend@line - \draw[color = \col, - line width = \size, - style = \motif, - text = \tkz@mainlinecolor]% - (0cm ,\the\c@pgfmath@counta ex)--% - (\tkz@legend@line@len,\the\c@pgfmath@counta ex) - \else - \draw plot[mark size = \size,% - mark = \motif,% - mark options = {color=\col}]% - coordinates{(0 ex,\the\c@pgfmath@counta ex)}% - \fi - node[right=1ex] {\mtext}; - \global\advance\c@pgfmath@counta by 3 % - }% - -\end{tikzpicture}% -};% -\endgroup -} - +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c tkz-tools-misc.tex} +\makeatletter %<--------------------------------------------------------------------------–> % hline pb avec line %<--------------------------------------------------------------------------–> \def\tkzHLine{\pgfutil@ifnextchar[{\tkz@HLine}{\tkz@HLine[]}} \def\tkz@HLine[#1]#2{% - \begingroup - \FPeval{\tkz@valy}{(#2)}% - \FPadd{\tkz@ptya}{\tkz@valy}{-\tkz@init@yorigine} - \FPdiv{\tkz@ptya}{\tkz@ptya}{\tkz@init@ystep} - \draw[#1] (\tkz@xa,\tkz@ptya)--(\tkz@xb,\tkz@ptya);% +\begingroup + \edef\tkz@ptya{\fpeval{(#2-\tkz@init@yorigine)/\tkz@init@ystep}} + \draw[#1] (\tkz@xa,\tkz@ptya)--(\tkz@xb,\tkz@ptya);% \endgroup } %<--------------------------------------------------------------------------–> @@ -113,8 +24,8 @@ line=false} \def\tkz@HLines[#1]#2{% \begingroup \foreach \tkz@vy in {#2}{% - \FPeval\my@tkz@vy{\tkz@vy} - \tkz@HLine[#1]{\my@tkz@vy}} + \edef\my@tkz@vy{\fpeval{(\tkz@vy)}} + \tkz@HLine[#1]{\my@tkz@vy}} \endgroup } %<---------------------------------------------------------------------------> @@ -123,21 +34,18 @@ line=false} \def\tkzVLine{\pgfutil@ifnextchar[{\tkz@VLine}{\tkz@VLine[]}} \def\tkz@VLine[#1]#2{% \begingroup - \FPeval\tkz@valx{(#2)}% - \FPadd{\tkz@ptxa}{\tkz@valx}{-\tkz@init@xorigine} - \FPdiv{\tkz@ptxa}{\tkz@ptxa}{\tkz@init@xstep} + \edef\tkz@ptxa{\fpeval{(#2-\tkz@init@xorigine)/\tkz@init@xstep}} \draw[#1](\tkz@ptxa,\tkz@ya)--(\tkz@ptxa,\tkz@yb); \endgroup } - %<---------------------------------------------------------------------------> % vlines %<---------------------------------------------------------------------------> \def\tkzVLines{\pgfutil@ifnextchar[{\tkz@VLines}{\tkz@VLines[]}} \def\tkz@VLines[#1]#2{% \begingroup - \foreach \tkz@vx in {#2}{% - \FPeval\my@tkz@vx{\tkz@vx} + \foreach \tkz@vx in {#2}{% + \edef\my@tkz@vx{\fpeval{(\tkz@vx)}} \tkz@VLine[#1]{\my@tkz@vx}} \endgroup } @@ -145,37 +53,30 @@ line=false} \def\tkzHTick{\pgfutil@ifnextchar[{\tkz@HTick}{\tkz@HTick[]}} \def\tkz@HTick[#1]#2{% \begingroup - \FPeval\tkz@ptxa{(#2)}% - \FPround\tkz@ptxa\tkz@ptxa{5} - \FPclip\tkz@ptxa\tkz@ptxa - \FPadd\tkz@ptxa\tkz@ptxa{-\tkz@init@xorigine} - \FPdiv\tkz@ptxa\tkz@ptxa{\tkz@init@xstep} - \draw plot[mark style,#1] coordinates {(\tkz@ptxa,0)}; + \edef\tkz@ptxa{\fpeval{(round(#2,5)-\tkz@init@xorigine)/\tkz@init@xstep}} + \draw plot[mark style,#1] coordinates {(\tkz@ptxa,0)}; \endgroup } \def\tkzHTicks{\pgfutil@ifnextchar[{\tkz@HTicks}{\tkz@HTicks[]}} \def\tkz@HTicks[#1]#2{% \begingroup -\foreach \tkz@hy in {#2} {\tkz@HTick[#1]{\tkz@hy}} + \foreach \tkz@hy in {#2} {\tkz@HTick[#1]{\tkz@hy}} \endgroup } %<--------------------------------------------------------------------------–> \def\tkzVTick{\pgfutil@ifnextchar[{\tkz@VTick}{\tkz@VTick[]}} \def\tkz@VTick[#1]#2{% \begingroup - \FPeval\tkz@ptya{(#2)}% - \FPround\tkz@ptya\tkz@ptya{5}% - \FPclip\tkz@ptya\tkz@ptya - \FPadd\tkz@ptya\tkz@ptya{-\tkz@init@yorigine}% - \FPdiv\tkz@ptya\tkz@ptya{\tkz@init@ystep}% - \draw plot[mark style,#1] coordinates {(0,\tkz@ptya)}; + \edef\tkz@ptya{\fpeval{(round(#2,5)-\tkz@init@yorigine)/\tkz@init@ystep}} + \draw plot[mark style,#1] coordinates {(0,\tkz@ptya)}; \endgroup } %<--------------------------------------------------------------------------–> \def\tkzVTicks{\pgfutil@ifnextchar[{\tkz@VTicks}{\tkz@VTicks[]}} \def\tkz@VTicks[#1]#2{% \begingroup -\foreach \tkz@hy in {#2} {\tkz@VTick[#1]{\tkz@hy}} + \foreach \tkz@hy in {#2} {\tkz@VTick[#1]{\tkz@hy}} \endgroup } +\makeatother \endinput \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-modules.tex b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-modules.tex new file mode 100644 index 00000000000..e0e69f639f0 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-modules.tex @@ -0,0 +1,60 @@ +% tkz-tools-modules +% Copyright 2011 by Alain Matthes +% This file may be distributed and/or modified +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c tkz-tools-utilities.tex} +\makeatletter +%<------------- % chargement des modules ----------------------------------> +\def\tkz@obj@all{angles,arcs,compass,defcircles,deflines,defpoints,defpointsby,defpointsrnd,defpointswith,polygons,protractor,sectors,show,triangles}% +\def\tkz@obj@txt{all} +\def\usetkzobj{\pgfutil@ifnextchar[{\use@usetkzobj}{\use@@usetkzobj}}%} +\def\use@usetkzobj[#1]{\use@@usetkzobj{#1}} +\def\use@@usetkzobj#1{% + \def\tkz@list{#1} + \ifx\tkz@obj@txt\tkz@list \edef\tkz@list{\tkz@obj@all}% + \else + \edef\tkz@list{#1}% + \fi + \pgfutil@for\tkz@temp:=\tkz@list\do{% + \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`\|} + \catcode`\@=11 + \catcode`\|=12 + \input tkz-obj-\tkz@temp.tex + \catcode`\@=\csname tkz@obj@#1@atcode\endcsname + \catcode`\|=\csname tkz@obj@#1@barcode\endcsname + \fi% + }% +}% +%<---------------------------------------------------------–> +\def\tkz@tool@all{math-xfp} +\def\tkz@tool@txt{all} + +\def\usetkztool{\pgfutil@ifnextchar[{\use@usetkztool}{\use@@usetkztool}}%} +\def\use@usetkztool[#1]{\use@@usetkztool{#1}} +\def\use@@usetkztool#1{% + \def\tkz@list{#1} + \ifx\tkz@tool@txt\tkz@list \edef\tkz@list{\tkz@tool@all}% + \else + \edef\tkz@list{#1}% + \fi + \pgfutil@for\tkz@temp:=\tkz@list\do{% + \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`\|} + \catcode`\@=11 + \catcode`\|=12 + \input tkz-tools-\tkz@temp.tex + \catcode`\@=\csname tkz@tool@#1@atcode\endcsname + \catcode`\|=\csname tkz@tool@#1@barcode\endcsname + \fi% + }% +}% +\makeatother +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-obsolete.tex b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-obsolete.tex deleted file mode 100644 index 82f7e1bcbb0..00000000000 --- a/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-obsolete.tex +++ /dev/null @@ -1,219 +0,0 @@ -\makeatletter -\global\edef\tkz@sua@lw{0.4pt} -\global\edef\tkz@sua@color{black} -\global\edef\tkz@sua@gradsize{\textstyle} -\global\edef\tkz@sua@tickwd{0.8 pt} -\global\edef\tkz@sua@ticka{2 pt} -\global\edef\tkz@sua@tickb{2 pt} - - - -\def\tkzX{\pgfutil@ifnextchar[{\tkz@X}{\tkz@X[]}} -\def\tkz@X[#1]{% -\begingroup - \pgfkeys{/tkzX/.cd, - trig = 0, - lw = \tkz@sua@lw, - gradsize = \tkz@sua@gradsize, - color = \tkz@sua@color, - tickwd = \tkz@sua@tickwd, - tickup = \tkz@sua@ticka, - tickdn = \tkz@sua@tickb, - pos = {below = 3pt}, - label = $x$, - poslabel = {below = 3pt}, - noticks = false, - nograd = false, -% unit = false, - orig = false, - step = \tkz@init@xstep - } - \pgfqkeys{/tkzX}{#1} - \FPtrunc\posmax{\tkz@xb}{\tkz@init@xdec}% - \FPtrunc\posmin{\tkz@xa}{\tkz@init@xdec}% - \FPdiv\tkz@posnext{\tkz@posnext}{\tkz@init@xstep} - \FPadd\posnext{\posmin}{\tkz@posnext} - \FPadd\tkz@xbsup{\tkz@xb}{\tkz@init@rightspace} - \path (\tkz@xa,0)--(\tkz@xb,0) node(tkz@xline){};% - \protected@edef\tkz@temp{% - \noexpand% - \draw[xaxe style,line width = \tkz@X@lw,% - color = \tkz@X@color]% - (\tkz@xa,0)--(\tkz@xbsup,0)% - node[xlabel style,\tkz@X@poslabel]}\tkz@temp% - {\tkz@X@label};% - \FPtrunc\xtkzero{0.0000000}{\tkz@init@xdec}% - \iftkz@X@noticks% - \else -\ifnum\tkz@X@trig=0% - \FPtrunc\posmax{\posmax}{\tkz@init@xdec}% - \foreach \pos in {\posmin,\posnext,...,\posmax}{% - \FPtrunc\tkz@pos{\pos}{\tkz@init@xdec}% - \protected@edef\tkz@temp{% - \noexpand% - \draw[line width = \tkz@X@tickwd,shift = {(\pos,0)}]% - (0pt,\tkz@X@tickup)--(0pt,-\tkz@X@tickdn)% - node[\tkz@X@pos,inner sep = 0pt]}\tkz@temp - {\FPmul{\xgrad}{\pos}{\tkz@init@xstep}% - \FPadd{\xgrad}{\xgrad}{\tkz@init@xorigine}% - \FPtrunc\xgrad{\xgrad}{\tkz@init@xdec}% - \iftkz@X@orig% - \iftkz@X@nograd - \else\tkz@showgrad{\xgrad}% - $\textcolor{\tkz@sur@colorlabel}{% - \tkz@X@gradsize{\numprint{\tkz@result}}}$% - \fi - \else % orig - \iftkz@init@NO% - \ifx\tkz@pos\posmin - \else - \tkz@showgrad{\xgrad}% - $\textcolor{\tkz@sur@colorlabel}{% - \tkz@X@gradsize{\numprint{\tkz@result}}}$ - \fi - \else % NO - \ifx\tkz@pos\xtkzero% - % \iftkz@X@unit\tkz@showgrad{\xgrad}% - % $\textcolor{\tkz@sur@colorlabel}{% - % \tkz@X@gradsize{\numprint{\tkz@result}}}$ - % \fi - \else - \iftkz@X@nograd% - \else\tkz@showgrad{\xgrad}% - $\textcolor{\tkz@sur@colorlabel}{% - \tkz@X@gradsize{\numprint{\tkz@result}}}$ - \fi - \fi%end of xtkzero - \fi%end of NO - \fi%end of orig -};% end of draw -}% end foreach - \else %trig affichage - \FPadd{\posmin}{\posmin}{0.5}% - \FPdiv\nbtrigticksmax{\posmax}{\FPpi}% - \FPdiv\nbtrigticksmin{\posmin}{\FPpi}% - \FPmul\nbtrigticksmax{\nbtrigticksmax}{\tkz@X@trig}% - \FPmul\nbtrigticksmin{\nbtrigticksmin}{\tkz@X@trig}% - \FPround\nbtrigticksmin{\nbtrigticksmin}{0}% - \foreach \pos in {\nbtrigticksmin,...,\nbtrigticksmax}{% - \FPmul\pospi{\pos}{\FPpi} - \FPdiv\pospi{\pospi}{\tkz@X@trig}% - \protected@edef\tkz@temp{% - \noexpand\draw[line width = \tkz@X@tickwd,% - shift = {(\pospi,0)}]% - (0pt,\tkz@X@tickup)--(0pt,-\tkz@X@tickup)% - node[\tkz@X@pos,% - text height = 8pt,% - inner sep = 1pt]}\tkz@temp% - {\tkzPrintFracWithPi{\pos}{\tkz@X@trig}% - \tkzprintfrac};% - }% end foreach - \fi -\fi% end ticks -\endgroup - }% todo macro pour l'affichage - -%<--------------------------------------------------------------------------–> -% tkzY -%<--------------------------------------------------------------------------–> - -\pgfkeys{ - tkzY/.cd, - pos/.code = {\def\tkz@Y@pos{#1}}, - trig/.code = {\def\tkz@Y@trig{#1}}, - lw/.code = {\def\tkz@Y@lw{#1}}, - color/.code = {\def\tkz@Y@color{#1}}, - label/.code = {\def\tkz@Y@label{#1}}, - poslabel/.code = {\def\tkz@Y@poslabel{#1}}, - tickwd/.code = {\def\tkz@Y@tickwd{#1}}, - ticklt/.code = {\def\tkz@Y@ticklt{#1}}, - tickrt/.code = {\def\tkz@Y@tickrt{#1}}, - gradsize/.code = {\def\tkz@Y@gradsize{#1}}, - step/.code = {\def\tkz@posnext{#1}}, - noticks/.is if = tkz@Y@noticks, - noticks/.default = true, - nograd/.is if = tkz@Y@nograd, - nograd/.default = true, - orig/.is if = tkz@Y@orig, - orig/.default = true, - unit/.is if = tkz@Y@unit, - unit/.default = true } -\def\tkzY{\pgfutil@ifnextchar[{\tkz@Y}{\tkz@Y[]}} -\def\tkz@Y[#1]{% - \pgfkeys{/tkzY/.cd, - trig = 0, - lw = \tkz@sua@lw, - gradsize = \tkz@sua@gradsize, - color = \tkz@sua@color, - tickwd = \tkz@sua@tickwd, - tickrt = \tkz@sua@ticka, - ticklt = \tkz@sua@tickb, - label = $y$, - poslabel = {left = 3pt}, - pos = {left = 3pt}, - noticks = false, - nograd = false, - unit = false, - orig = false, - step = \tkz@init@ystep - } - \pgfqkeys{/tkzY}{#1} - \FPtrunc\posmax{\tkz@yb}{\tkz@init@ydec}% - \FPtrunc\posmin{\tkz@ya}{\tkz@init@ydec}% - \FPdiv\tkz@posnext{\tkz@posnext}{\tkz@init@ystep} - \FPadd\posnext{\posmin}{\tkz@posnext} - \path (0,\tkz@ya)--(0,\tkz@yb) node(tkz@yline){};% - \FPadd\tkz@ybsup{\tkz@yb}{\tkz@init@upspace} - \protected@edef\tkz@temp{% - \noexpand% - \draw[line width = \tkz@Y@lw,% - color = \tkz@Y@color,yaxe style]% - (0,\tkz@ya)--(0,\tkz@ybsup)% - node[\tkz@Y@poslabel,ylabel style]}\tkz@temp% - {\tkz@Y@label};% - \FPtrunc\ytkzero{0.000000}{\tkz@init@ydec}% - \iftkz@Y@noticks% - \else - \foreach \pos in {\posmin,\posnext,...,\posmax}{% - \FPtrunc\tkz@pos{\pos}{\tkz@init@ydec}% - \protected@edef\tkz@temp{% - \noexpand% - \draw[line width = \tkz@Y@tickwd,% - shift = {(0,\pos)}]% - (\tkz@Y@tickrt,0pt)--(-\tkz@Y@ticklt,0pt)% - node[\tkz@Y@pos,inner sep = 0pt]}\tkz@temp% - {\FPmul{\ygrad}{\pos}{\tkz@init@ystep}% - \FPadd{\ygrad}{\ygrad}{\tkz@init@yorigine} - \FPtrunc\ygrad{\ygrad}{\tkz@init@ydec}% - \iftkz@Y@orig% - \iftkz@Y@nograd\else\tkz@showgrad{\ygrad}% - $\textcolor{\tkz@sur@colorlabel}{\tkz@Y@gradsize{\numprint{\tkz@result}}}$\fi - \else - \iftkz@init@NO% - \ifx\tkz@pos \posmin\else - \tkz@showgrad{\ygrad}% - $\textcolor{\tkz@sur@colorlabel}{\tkz@Y@gradsize{\numprint{\tkz@result}}}$\fi - \else - \ifx\tkz@pos \ytkzero - \iftkz@Y@unit\tkz@showgrad{\ygrad}% - $\textcolor{\tkz@sur@colorlabel}{\tkz@Y@gradsize{\numprint{\tkz@result}}}$\fi\else - \iftkz@Y@nograd% - \else \tkz@showgrad{\ygrad}% - $\textcolor{\tkz@sur@colorlabel}{\tkz@Y@gradsize{\numprint{\tkz@result}}}$\fi\fi - \fi - \fi - };% - }% -\fi -\iftkz@init@NO\else\iftkz@Y@unit% - \draw[line width = 1pt,% - inner sep = 1pt] (0,0) -- (0,1)% - node[left=3pt]% - {$\tkz@Y@gradsize{\numprint{\tkz@init@ystep}}$};% - \draw[line width = \tkz@Y@tickwd,% - shift = {(0,1)}]% - (\tkz@Y@tickrt,0pt)--(-\tkz@Y@ticklt,0pt);% - \fi\fi -}% -\makeatother -\endinput \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-print.tex b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-print.tex new file mode 100644 index 00000000000..72aa8e8f7c2 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-print.tex @@ -0,0 +1,79 @@ +% tkz-tool-print.tex +% Copyright 2011 by Alain Matthes +% This file may be distributed and/or modified +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c tkz-tools-print.tex} +\makeatletter +%<------------- tkzPrintFrac ----------------------------------> +\def\tkzPrintFrac#1#2{% +\begingroup +\tkzReducFrac{#1}{#2} +\xdef\tkzprintfrac{$ \frac{\tkzMathFirstResult}{\tkzMathSecondResult}$}% + \ifnum\tkzMathFirstResult=0% + \xdef\tkzprintfrac{$0$}% + \else + \ifnum\tkzMathSecondResult=1 % + \ifnum\tkzMathFirstResult=1 % + \xdef\tkzprintfrac{$1$}% + \else + \ifnum\tkzMathFirstResult=-1% + \xdef\tkzprintfrac{$-1$}% + \else + \xdef\tkzprintfrac{$\tkzMathFirstResult$}% + \fi\fi + \else + \ifnum\tkzMathFirstResult=1 % + \xdef\tkzprintfrac{$\tkzmathstyle\frac{1}{\tkzMathSecondResult}$}% + \else + \ifnum\tkzMathFirstResult=-1 % + \xdef\tkzprintfrac{$\tkzmathstyle\frac{-1}{\tkzMathSecondResult}$}% + \else + \xdef\tkzprintfrac{$\tkzmathstyle\frac{\tkzMathFirstResult}{% + \tkzMathSecondResult}$}% + \fi\fi\fi\fi +\endgroup} +%<------------- tkzPrintFracWithPi ----------------------------------> +\def\tkzPrintFracWithPi#1#2{% +\begingroup +\tkzReducFrac{#1}{#2} +\xdef\tkzprintfrac{% + $\tkzmathstyle\frac{\tkzMathFirstResult\pi}{\tkzMathSecondResult}$}% +\ifnum\tkzMathFirstResult=0% + \xdef\tkzprintfrac{$0$}% +\else + \ifnum\tkzMathSecondResult=1 % + \ifnum\tkzMathFirstResult=1 % + \xdef\tkzprintfrac{$\pi$}% + \else + \ifnum\tkzMathFirstResult=-1% + \xdef\tkzprintfrac{$-\pi$}% + \else + \xdef\tkzprintfrac{$\tkzMathFirstResult\pi$}% + \fi + \fi + \else + \ifnum\tkzMathFirstResult=1 % + \xdef\tkzprintfrac{% + $\tkzmathstyle\frac{\pi}{\tkzMathSecondResult}$ + }% + \else + \ifnum\tkzMathFirstResult=-1 % + \xdef\tkzprintfrac{$\tkzmathstyle\frac{-\pi}{% + \tkzMathSecondResult}$}% + \else + \xdef\tkzprintfrac{$\tkzmathstyle\frac{% + \tkzMathFirstResult\pi}{% + \tkzMathSecondResult}$ + }% + \fi + \fi + \fi +\fi +\endgroup +}% + +\makeatother +\endinput diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-text.tex b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-text.tex new file mode 100644 index 00000000000..c676da2402a --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-text.tex @@ -0,0 +1,82 @@ +% tkz-tools-text.tex +% Copyright 2011 by Alain Matthes +% This file may be distributed and/or modified +% 1. under the LaTeX Project Public License and/or +% 2. under the GNU Public License. +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c tkz-tools-text.tex} +\makeatletter +%<--------------------------------------------------------------------------–> +% tkzText +%<--------------------------------------------------------------------------–> +\def\tkz@parsenode#1{% +\tkz@getvirg#1,\@nil +\iftkz@node +\else + \tkz@getfromcart#1\@nil +\fi +} +\def\tkz@getvirg#1,#2\@nil{% +\ifx\tkzempty#2\tkzempty% + \tkz@nodetrue +\else + \tkz@nodefalse +\fi +} +\def\tkzText{\pgfutil@ifnextchar[{\tkz@Text}{\tkz@Text[]}} +\def\tkz@Text[#1](#2)#3{% + \begingroup + \tkz@parsenode{#2} + \iftkz@node + \node[#1] at (#2){#3}; + \else + \edef\tkzpt@xa{\fpeval{(\tkz@absc-\tkz@init@xorigine)/\tkz@init@xstep}} + \edef\tkzpt@ya{\fpeval{(\tkz@ord-\tkz@init@yorigine)/\tkz@init@ystep}} + \node[#1] at (\tkzpt@xa,\tkzpt@ya){#3};% + \fi +\endgroup +}% +% %<--------------------------------------------------------------------------–> +% % légende +% %<--------------------------------------------------------------------------–> +\pgfkeys{/tkzlegend/.cd, + line/.is if = tkz@legend@line, + line/.default = true, + line = false, + /tkzlegend/.search also = {/tikz}, +} +\def\tkzLegend{\pgfutil@ifnextchar[{\tkz@Legend}{\tkz@Legend[]}} +\def\tkz@Legend[#1](#2,#3)#4{% +\pgfqkeys{/tkzlegend}{#1} +\begingroup + \c@pgfmath@counta=0 % + \edef\tkzpt@xa{\fpeval{(#2-\tkz@init@xorigine)/\tkz@init@xstep}} + \edef\tkzpt@ya{\fpeval{(#3-\tkz@init@yorigine)/\tkz@init@ystep}} + \node[/tkzlegend/.cd,#1] at (\tkzpt@xa,\tkzpt@ya) {% +\begin{tikzpicture} + \foreach \motif/\size/\col/\mtext in {#4}{% + \iftkz@legend@line + \draw[color = \col, + line width = \size, + style = \motif, + text = \tkz@mainlinecolor]% + (0cm ,\the\c@pgfmath@counta ex)--% + (\tkz@legend@line@len,\the\c@pgfmath@counta ex) + \else + \draw plot[mark size = \size,% + mark = \motif,% + mark options = {color=\col}]% + coordinates{(0 ex,\the\c@pgfmath@counta ex)}% + \fi + node[right=1ex] {\mtext}; + \global\advance\c@pgfmath@counta by 3 % + }% + +\end{tikzpicture}% +};% +\endgroup +} + +\makeatother +\endinput \ No newline at end of file diff --git a/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-utilities.tex b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-utilities.tex index 412ad2d8d30..cba0a88f804 100644 --- a/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-utilities.tex +++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-utilities.tex @@ -1,15 +1,20 @@ +% tkz-tools-utilities % Copyright 2011 by Alain Matthes -% % This file may be distributed and/or modified -% % 1. under the LaTeX Project Public License and/or % 2. under the GNU Public License. +\def\fileversion{3.01c} +\def\filedate{2020/01/23} +\typeout{2020/01/23 3.01c tkz-tools-utilities.tex} +\makeatletter +% for testing results +\def\extractxy#1{% +\pgfextractx{\pgf@x}{\pgfpointanchor{#1}{center}} +\pgfextracty{\pgf@y}{\pgfpointanchor{#1}{center}} +\typeout{#1 \the\pgf@x,\the\pgf@y} +} - -\def\fileversion{1.16 d} -\def\filedate{2018/09/19} - -%<--------------------------------------------------------------------------–> +%<-------------- some tools -------------------------------------------------> \def\tkzutil@empty{} \def\tkzutil@firstofone#1{#1} \def\tkzutil@firstoftwo#1#2{#1} @@ -22,150 +27,70 @@ \expandafter\tkzutil@secondoftwo \fi} %<--------------------------------------------------------------------------–> +\long\def\iftkznodedefined#1#2#3{% + \tkzutil@ifundefined{pgf@sh@ns@#1}{#3}{#2}% +} %<--------------------------------------------------------------------------–> -\global\def\tkzActivOff{% -\edef\tkzTwoPtCode{\the\catcode`\:} -\edef\tkzPtExCode{\the\catcode`\!} -\edef\tkzPtVirCode{\the\catcode`\;} -\catcode`\:=12 \catcode`\!=12 \catcode`\;=12}% -\global\def\tkzActivOn{% -\catcode`\:=\tkzTwoPtCode\relax -\catcode`\!=\tkzPtExCode\relax -\catcode`\;=\tkzPtVirCode\relax +\gdef\tkzActivOff{% + \edef\tkzTwoPtCode{\the\catcode`\:} + \edef\tkzPtExCode{\the\catcode`\!} + \edef\tkzPtVirCode{\the\catcode`\;} + \catcode`\:=12 \catcode`\!=12 \catcode`\;=12 + }% +\gdef\tkzActivOn{% + \catcode`\:=\tkzTwoPtCode\relax + \catcode`\!=\tkzPtExCode\relax + \catcode`\;=\tkzPtVirCode\relax }% - -%<----------------------------– autres tools --------------------------------> -%<-------------------------- Initialisation --------------------------------> -\pgfkeys{ -/tkzsupcol/.cd, - background/.code = {\global\edef\tkz@suc@bkc{#1}},% - text/.code = {\global\edef\tkz@suc@txt{#1}}, -} -\def\tkzSetUpColors{\pgfutil@ifnextchar[{\tkz@SetUpColors}{\tkz@SetUpColors[]}} -\def\tkz@SetUpColors[#1]{% -\begingroup -\pgfkeys{% -tkzsupcol/.cd, - background = \tkz@backgroundcolor, - text = \tkz@textcolor - } -\pgfqkeys{/tkzsupcol}{#1} -\global\edef\tkz@fillcolor{\tkz@suc@bkc} -\global\edef\tkz@mainlinecolor{\tkz@suc@txt} -\global\edef\tkz@textcolor{\tkz@suc@txt} -\global\def\tkz@otherlinecolor{\tkz@suc@txt!50} -\global\edef\tkz@sua@color{\tkz@mainlinecolor} -\pagecolor{\tkz@suc@bkc} -\color{\tkz@suc@txt} - \InputIfFileExists{tkz-base.cfg}{\typeout{Local configuration file tkz-param.cfg found and used}}{\typeout{tkz-base.cfg not found} -%<--------- axes cartesian system ---------------------------------------–> -\global\edef\tkz@init@color{\tkz@textcolor} -\global\def\tkz@init@lw{0.4 pt} -\global\def\tkz@init@xlabel{$x$} -\global\def\tkz@init@ylabel{$y$} -\global\def\tkz@init@tickwd{0.8 pt} -\global\def\tkz@init@ticka{2 pt} -\global\def\tkz@init@tickb{2 pt} -\global\def\tkz@init@rightspace{.5} -\global\def\tkz@init@leftspace{0} -\global\def\tkz@init@upspace{.5} -\global\def\tkz@init@downspace{0} -\global\let\tkzmathstyle\displaystyle -\tikzset{xlabel style/.style={below=3 pt, - inner sep = 1pt, - outer sep = 0pt}} -\tikzset{xaxe style/.style ={>=latex,->}} -\tikzset{ylabel style/.style={left = 3 pt, - inner sep = 1pt, - outer sep = 0pt}} -\tikzset{yaxe style/.style ={>=latex,->}} -%<-------------------------- rep ---------------------------------------–> -\global\edef\tkz@sur@color{\tkz@mainlinecolor} -\global\edef\tkz@sur@colorlabel{\tkz@mainlinecolor} -\global\def\tkz@sur@lw{0.8 pt} -\global\def\tkz@sur@posxlabel{below=2pt} -\global\def\tkz@sur@posylabel{left=2pt} -%<-------------------------- grid ---------------------------------------–> -\global\edef\tkz@grid@color{gray} -\global\def\tkz@grid@lw{0.4 pt} -\global\def\tkzCoeffSubColor{50} -\global\def\tkzCoeffSubLw{0.8} -\global\def\tkz@grid@xstep{0.2} -\global\def\tkz@grid@ystep{0.2} -%<-------------------------- line ---------------------------------------–> -\global\edef\tkz@euc@linecolor{\tkz@mainlinecolor} -\global\def\tkz@euc@linewidth{0.6pt} -\global\def\tkz@euc@linestyle{solid} -\global\def\tkz@euc@lineleft{.2} -\global\def\tkz@euc@lineright{.2} -\global\def\tkz@legend@line@len{1cm} -\global\edef\tkz@euc@segmentcolor{\tkz@mainlinecolor} -\global\edef\tkz@euc@circlecolor{\tkz@mainlinecolor} -\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}}} -%<-------------------------- points -----------------------------------–> -\global\edef\tkz@euc@pointshape{circle} -\global\edef\tkz@euc@pointcolor{\tkz@mainlinecolor} -\global\edef\tkz@euc@labelcolor{\tkz@mainlinecolor} -\global\def\tkz@euc@pointsize{6} -\global\def\tkz@euc@pointpos{below right} -\tikzset{point style/.style={draw = \tkz@euc@pointcolor, - inner sep = 0pt, - shape = \tkz@euc@pointshape, - minimum size = \tkz@euc@pointsize*\pgflinewidth, - fill = \tkz@euc@pointcolor!50}} -%<---------------------------- mark -----------------------------------–> -\global\edef\tkz@mk@color{\tkz@mainlinecolor} -\global\edef\tkz@mk@mark{*} -\global\edef\tkz@mk@size{3pt} -\global\edef\tkz@mk@fill{\tkz@otherlinecolor} -\tikzset{mark style/.style={mark=\tkz@mk@mark,mark size=\tkz@mk@size,mark options={color=\tkz@mk@color,fill=\tkz@mk@fill}}} -\tikzset{arrow coord style/.style={dashed, - \tkz@euc@linecolor, - >=latex', - ->}} -\tikzset{xcoord style/.style={\tkz@euc@labelcolor, - font=\normalsize,text height=1ex, - inner sep = 0pt, - outer sep = 0pt, - fill=\tkz@fillcolor, - below=3pt}} -\tikzset{ycoord style/.style={\tkz@euc@labelcolor, - font=\normalsize,text height=1ex, - inner sep = 0pt, - outer sep = 0pt, - fill=\tkz@fillcolor, - left=3pt}} -%<--------------------------- vector --------------------------------------–> -\tikzset{vector style/.style={>=latex,->}} -%<------------------------- compass -----------------------------------–> -\global\edef\tkz@euc@compasscolor{\tkz@otherlinecolor} -\global\def\tkz@euc@compasswidth{0.4pt} -\global\def\tkz@euc@compassstyle{solid} -\tikzset{compass style/.style={color = \tkz@euc@compasscolor, - line width = \tkz@euc@compasswidth, - style = \tkz@euc@compassstyle}} +%<------ Initialisation of the colors with tkzSetUpColors -----------------> +% Première macro SetUpColors %%%%%%%%%%%%%%%%%%%%% +%Possible +\pgfkeys{/setupcolor/.is family} +\def\setupcolorkeys#1{% + \pgfkeys{/setupcolor,#1}} +\setupcolorkeys{ + background/.estore in = \setupcolor@background, + text/.estore in = \setupcolor@text, + @initial/.style = {background=white,text=black}, + @apply/.code = {\pagecolor{\setupcolor@background}% + \color{\setupcolor@text}% + }, } -\endgroup} +\def\tkzSetUpColors{\pgfutil@ifnextchar[{\tkz@SetUpColors}{\tkz@SetUpColors[]}} +\def\tkz@SetUpColors[#1]{\setupcolorkeys{@initial,#1,@apply}} +%<------ Initialisation of all colors -----------------> +\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 + } +\def\tkzSetUpAllColors{\pgfutil@ifnextchar[{\tkz@SetUpAllColors}{% + \tkz@SetUpAllColors[]}} +\def\tkz@SetUpAllColors[#1]{% + \pgfqkeys{/tkzsupallcol}{#1} % now we redine the based colors + \def\tkz@fillcolor{\tkz@suac@bkc} + \def\tkz@mainlinecolor{\tkz@suac@txt} + \def\tkz@textcolor{\tkz@suac@txt} + \def\tkz@otherlinecolor{\tkz@suac@txt!50} + \def\tkz@sua@color{\tkz@suac@txt} + \tkzSetUpAxis[color=\tkz@suac@txt] + \tkzSetUpGrid[color=\tkz@suac@txt] + \pagecolor{\tkz@suac@bkc} + \color{\tkz@suac@txt} +} %<--------------------------------------------------------------------------–> % Pour savoir le nombre de décimales d'un nombre % le nombre dans #1 et le résultat dans \c@pgfmath@countb %<--------------------------------------------------------------------------–> - -\newcommand*\tkz@getdecimal[1]{% - \expandafter\@getdecimal#1.\@nil -} - +\newcommand\tkz@getdecimal[1]{\expandafter\@getdecimal#1.\@nil} \def\@getdecimal#1.#2\@nil{% \ifx\empty#2\empty % Si #2 est vide, c'est qu'il n'y avait pas de point % dans la chaîne initiale \c@pgfmath@countb0 % - \global\def\tkz@decpart{}% + \gdef\tkz@decpart{}% \else % sinon c'est la chaîne qui suit le point décimal... \CountToken{#2}% @@ -174,8 +99,8 @@ tkzsupcol/.cd, \@@getdecimal#2\@nil \fi } -\def\@@getdecimal#1.\@nil{\global\def\tkz@decpart{#1}} -%<--------------------------------------------------------------------------–> +\def\@@getdecimal#1.\@nil{\gdef\tkz@decpart{#1}} +%<---------------------------------------------------------–> % code from JCC modifi \newcommand\CountToken[1]{% \c@pgfmath@countb0 % @@ -192,12 +117,10 @@ tkzsupcol/.cd, \fi } % end code from JCC - -%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +%<---------------------------------------------------------–> % Tools -%<–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––> +%<---------------------------------------------------------–> %<–––––––– code from TeX in Practice ––––––––> -\newif\if@TestSubString \def\SubStringConditional #1#2{% TT\fi \edef\@MainString{#1}% @@ -210,13 +133,12 @@ tkzsupcol/.cd, }% \@TestSubS #1#2\\ \ifx\@MainString\@TestTemp - \@TestSubStringfalse + \tkz@TestSubStringfalse \else - \@TestSubStringtrue + \tkz@TestSubStringtrue \fi - \if@TestSubString + \iftkz@TestSubString } - \def\RecursionMacroEnd #1#2#3{% #1\relax \def\@RecursionMacroEndNext{#2}% @@ -225,7 +147,6 @@ tkzsupcol/.cd, \fi \@RecursionMacroEndNext } - \def\ReplaceSubStrings #1#2#3#4{% \def\@ReplaceResult{#1}% \edef\@ReplaceMain{#2}% @@ -250,89 +171,12 @@ tkzsupcol/.cd, \@EndReplaceSubStrings \@ReplaceSubStrings } -\def\tkzPrintFrac#1#2{% -\begingroup -\tkzReducFrac{#1}{#2} -\global\edef\tkzprintfrac{$ \frac{\tkzMathFirstResult}{\tkzMathSecondResult}$}% - \ifnum\tkzMathFirstResult=0% - \global\edef\tkzprintfrac{$0$}% - \else - \ifnum\tkzMathSecondResult=1 % - \ifnum\tkzMathFirstResult=1 % - \global\edef\tkzprintfrac{$1$}% - \else - \ifnum\tkzMathFirstResult=-1% - \global\edef\tkzprintfrac{$-1$}% - \else - \global\edef\tkzprintfrac{$\tkzMathFirstResult$}% - \fi\fi - \else - \ifnum\tkzMathFirstResult=1 % - \global\edef\tkzprintfrac{$\tkzmathstyle\frac{1}{\tkzMathSecondResult}$}% - \else - \ifnum\tkzMathFirstResult=-1 % - \global\edef\tkzprintfrac{$\tkzmathstyle\frac{-1}{\tkzMathSecondResult}$}% - \else - \global\edef\tkzprintfrac{$\tkzmathstyle\frac{\tkzMathFirstResult}{% - \tkzMathSecondResult}$}% - \fi\fi\fi\fi -\endgroup} -%<---------------------------------------------------------------------------> -\def\tkzPrintFracWithPi#1#2{% -\begingroup -\tkzReducFrac{#1}{#2} -\global\edef\tkzprintfrac{$\tkzmathstyle\frac{\tkzMathFirstResult\pi}{\tkzMathSecondResult}$}% - \ifnum\tkzMathFirstResult=0% - \global\edef\tkzprintfrac{$0$}% - \else - \ifnum\tkzMathSecondResult=1 % - \ifnum\tkzMathFirstResult=1 % - \global\edef\tkzprintfrac{$\pi$}% - \else - \ifnum\tkzMathFirstResult=-1% - \global\edef\tkzprintfrac{$-\pi$}% - \else - \global\edef\tkzprintfrac{$\tkzMathFirstResult\pi$}% - \fi\fi - \else - \ifnum\tkzMathFirstResult=1 % - \global\edef\tkzprintfrac{$\tkzmathstyle\frac{\pi}{\tkzMathSecondResult}$}% - \else - \ifnum\tkzMathFirstResult=-1 % - \global\edef\tkzprintfrac{$\tkzmathstyle\frac{-\pi}{\tkzMathSecondResult}$}% - \else - \global\edef\tkzprintfrac{$\tkzmathstyle\frac{\tkzMathFirstResult\pi}{% - \tkzMathSecondResult}$}% - \fi\fi\fi\fi -\endgroup}% - -%<---------------------------------------------------------------------------> -% chargement des modules -\def\tkz@obj@all{polygons,vectors,arcs,sectors,angles,protractor} -\def\tkz@obj@txt{all} -\def\usetkzobj{\pgfutil@ifnextchar[{\use@usetkzobj}{\use@@usetkzobj}}%} -\def\use@usetkzobj[#1]{\use@@usetkzobj{#1}} -\def\use@@usetkzobj#1{% - \def\tkz@list{#1} - \ifx\tkz@obj@txt\tkz@list \edef\tkz@list{\tkz@obj@all}% - \else - \edef\tkz@list{#1}% - \fi - %\edef\tkz@list{#1}% - \pgfutil@for\tkz@temp:=\tkz@list\do{% - \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`\|} - \catcode`\@=11 - \catcode`\|=12 - \input tkz-obj-\tkz@temp.tex - \catcode`\@=\csname tkz@obj@#1@atcode\endcsname - \catcode`\|=\csname tkz@obj@#1@barcode\endcsname - \fi% - }% -}% -\def\DisabledNumprint{\let\tkz@numprint\numprint -\let\numprint\relax} +%<---------------------------------------------------------–> +\def\DisabledNumprint{% + \let\tkz@numprint\numprint + \let\numprint\relax + } \def\EnabledNumprint{\let\numprint\tkz@numprint} +%<---------------------------------------------------------–> +\makeatother \endinput \ No newline at end of file -- cgit v1.2.3