diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/tkz-base/tkz-obj-axes.tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/tkz-base/tkz-obj-axes.tex | 462 |
1 files changed, 462 insertions, 0 deletions
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 |