summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-base.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/tkz-base/tkz-tools-base.tex')
-rw-r--r--Master/texmf-dist/tex/latex/tkz-base/tkz-tools-base.tex700
1 files changed, 700 insertions, 0 deletions
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
new file mode 100644
index 00000000000..7da17a198a4
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-base/tkz-tools-base.tex
@@ -0,0 +1,700 @@
+% tkz-tools-base.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{1.16 c}
+\def\filedate{2011/06/01}
+
+%<--------------------------------------------------------------------------–>
+\global\let\@xa\tkz@init@xmin
+\global\let\@xb\tkz@init@xmax
+\global\let\@ya\tkz@init@ymin
+\global\let\@yb\tkz@init@ymax
+%<--------------------------------------------------------------------------–>
+\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 }
+
+\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}
+ \ifx\tkzfctloaded\undefined
+ \else
+ \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
+ \ifx\@xsgmin\@xsgmax \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}
+ \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}
+ \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}
+ \tkz@getdecimal{\tkz@init@xstep} % amélioration nb dec et integer
+ \global\edef\tkz@init@xdec{\number\c@pgfmath@countb}
+ \tkz@getdecimal{\tkz@init@ystep}
+ \global\edef\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};
+}%
+\endinput \ No newline at end of file