% 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