% $Id: tkz-tab.sty 2009-02-22 12h22 alain matthes $ % Copyright (C) 2009 Alain Matthes % % This file may be distributed and/or modified % % 1. under the LaTeX Project Public License , either version 1.3 % of this license or (at your option) any later version and/or % 2. under the GNU Public License. % % See the file doc/generic/pgf/licenses/LICENSE for more details.% % See http://www.latex-project.org/lppl.txt for details. % % % ``tkz-tab'' package for create tables of signs and variations. % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % tkz-tab.sty encodage : utf8 % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Créé par Alain Matthes le 04-01-2007. % % CTAN version % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Objet : Création de tableaux (signes et variations) %<-----------------------------------------------------------------------------> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{tkz-tab}[2009/02/21 v1.0c variations (ctan version) ] % 12h %<-----------------------------------------------------------------------------> \RequirePackage{etex} \RequirePackage{ifthen} \RequirePackage{xkeyval}[2005/11/25] \RequirePackage{tikz}[2008/01/15] \usetikzlibrary{arrows,patterns} %<------------------------------ Initialisation -----------------------------> %<------------------------------ Styles -----------------------------> \tikzset{node style/.style = {inner sep = 2pt, outer sep = 2pt, fill = \cmdTAB@tbs@colorT}} \tikzset{low left/.style = {above left = 2pt}} \tikzset{low right/.style = {above right = 2pt}} \tikzset{high right/.style = {below right = 2pt}} \tikzset{high left/.style = {below left = 2pt}} \tikzset{low/.style = {above = 2pt}} \tikzset{high/.style = {below = 2pt}} \tikzset{on double/.style = {fill = \cmdTAB@tbs@colorT}} \tikzset{tan style/.style = {> = latex',->, color = \cmdTAB@TG@color}} \tikzset{arrow style/.style = {\cmdTAB@VA@color, ->, > = latex', shorten > = 2pt, shorten < = 2pt}} \tikzset{from style/.style = {shorten > = 2pt, shorten < = 2pt, line width = 0.4pt, > = latex', ->, dotted}} %\tikzset{ant style/.style = {pattern=north east lines,opacity=0.4}}% %\tikzset{ima style/.style = {pattern=north east lines,opacity=0.4}}% \tikzset{h style/.style = {fill=gray,opacity=0.4}} \tikzset{double style/.style = {double}} \tikzset{t style/.style = {style = dotted}} %<------------------------------ End of Styles ----------------------------> \newdimen\tkz@XF \newdimen\tkz@YF \newcounter{tkz@cnt@line} \newcounter{tkz@cnt@lg} \newcounter{tkz@cnt@cl} \newcounter{tkz@cnt@pred} \newcounter{tkz@cnt@temp} \newcounter{tkz@cnt@arrow} \newcounter{tkz@cnt@zone} \newcounter{tkz@cnt@lgnext} \newcounter{tkz@cnt@clnext} \newcounter{tkz@cnt@pair} \newcounter{tkz@cnt@impair} \newcounter{tkz@cnt@aw} %<--------------------- tracé du cadre extérieur ---------------------------> \define@boolkey [TAB] {tbs} {help}[true]{} \define@boolkey [TAB] {tbs} {color}[true]{} \define@boolkey [TAB] {tbs} {nocadre}[true]{} \define@cmdkey [TAB] {tbs} {lw}{} \define@cmdkey [TAB] {tbs} {textw}{} \define@cmdkey [TAB] {tbs} {colorC}{} \define@cmdkey [TAB] {tbs} {colorL}{} \define@cmdkey [TAB] {tbs} {colorT}{} \define@cmdkey [TAB] {tbs} {colorV}{} \define@cmdkey [TAB] {tbs} {lgt}{} \define@cmdkey [TAB] {tbs} {espcl}{} \define@cmdkey [TAB] {tbs} {deltacl}{} \presetkeys [TAB] {tbs} {help = false, espcl = 3, lgt = 2, textw = \cmdTAB@tbs@lgt, lw = 0.4pt, colorC = white, colorL = white, colorT = white, colorV = white, color = false, nocadre = false, deltacl = 0.5}{} %<---------------------------------------------------------------------------> %<-------------- Macro principale : détermine les dim -----------------------> %<---------------------------------------------------------------------------> \newcommand*{\tkzTabInit}[3][]{% \setkeys[TAB]{tbs}{#1} \setcounter{tkz@cnt@line}{1} \setcounter{tkz@cnt@lgnext}{0} \setcounter{tkz@cnt@clnext}{0} \setcounter{tkz@cnt@aw}{0} \setcounter{tkz@cnt@lg}{0} \setcounter{tkz@cnt@cl}{0} \setcounter{tkz@cnt@pred}{0} \setcounter{tkz@cnt@temp}{0} \setcounter{tkz@cnt@arrow}{0} \setcounter{tkz@cnt@zone}{0} \gdef\tkz@deltaY{0} %<----------------------- Première colonne ----------------------------------> \foreach \ligne/\ecart in {#2}{% \stepcounter{tkz@cnt@lg}% }% \stepcounter{tkz@cnt@lg}% \foreach \colonne in {#3}{% \stepcounter{tkz@cnt@cl}% }% \addtocounter{tkz@cnt@cl}{-1}% \let\tkz@nbinterv\thetkz@cnt@cl \addtocounter{tkz@cnt@lg}{-1}% \xdef\maxtkz@cnt@lg{\thetkz@cnt@lg}% \xdef\tkz@maxcl{\thetkz@cnt@cl}% \pgfmathparse{\cmdTAB@tbs@lgt+2*\cmdTAB@tbs@deltacl+\cmdTAB@tbs@espcl*\tkz@nbinterv}% \global\let\tkz@lgttab\pgfmathresult \global\let\tkz@lgttab\tkz@lgttab \coordinate(T00) at (0,0); \coordinate(T10) at (\cmdTAB@tbs@lgt,0); \coordinate(T20) at (\tkz@lgttab,0); \setcounter{tkz@cnt@lg}{0}% \foreach \ligne/\tkz@deltaH in {#2}{% \setcounter{tkz@cnt@cl}{0}% \foreach \x in {#3}{% \pgfmathmultiply{\cmdTAB@tbs@espcl}{\value{tkz@cnt@cl}}% \global\let\ecartcl\pgfmathresult \pgfmathparse{\cmdTAB@tbs@lgt+\cmdTAB@tbs@deltacl+\ecartcl}% \global\let\tkz@ddx\pgfmathresult \stepcounter{tkz@cnt@cl}% \coordinate(N\thetkz@cnt@cl 0) at (\tkz@ddx,-\tkz@deltaY);}}% \foreach \m in {1,...,\tkz@maxcl}{% \setcounter{tkz@cnt@clnext}{\m}% \stepcounter{tkz@cnt@clnext}% \path (N\m 0)--(N\thetkz@cnt@clnext 0) coordinate[midway](M\m 0);}% \setcounter{tkz@cnt@cl}{0}% \setcounter{tkz@cnt@lg}{0}% \foreach \ligne/\tkz@deltaH in {#2}{% \stepcounter{tkz@cnt@lg}% \pgfmathadd{\tkz@deltaY}{\tkz@deltaH}% \global\let\tkz@deltaY\pgfmathresult \coordinate(T0\thetkz@cnt@lg) at (0,-\tkz@deltaY); \coordinate(T1\thetkz@cnt@lg) at (\cmdTAB@tbs@lgt,-\tkz@deltaY); \coordinate(T2\thetkz@cnt@lg) at (\tkz@lgttab,-\tkz@deltaY); \setcounter{tkz@cnt@cl}{0}% \foreach \x in {#3}{% \pgfmathparse{\cmdTAB@tbs@lgt+\cmdTAB@tbs@deltacl+% \cmdTAB@tbs@espcl*\thetkz@cnt@cl}% \global\let\tkz@ddx\pgfmathresult \stepcounter{tkz@cnt@cl}% \coordinate(N\number\value{tkz@cnt@cl}% \number\value{tkz@cnt@lg})% at (\tkz@ddx,-\tkz@deltaY); }% \foreach \m in {1,...,\tkz@maxcl}{% \setcounter{tkz@cnt@clnext}{\m}% \stepcounter{tkz@cnt@clnext}% \path (N\m\number\value{tkz@cnt@lg})--% (N\thetkz@cnt@clnext\number\value{tkz@cnt@lg})% coordinate[midway](M\m\number\value{tkz@cnt@lg}); \ifTAB@tbs@help% \draw[fill=green!30!black] (M\m\number\value{tkz@cnt@lg}) circle(2pt)% node[below right,green!30!black] {% \footnotesize M\m\number\value{tkz@cnt@lg}}; \fi }% \pgfmathdivide{\cmdTAB@tbs@lgt}{2}% \global\let\tkz@dx\pgfmathresult \pgfmathdivide{\tkz@deltaH}{2}% \global\let\tkz@halfdeltaH\pgfmathresult \pgfmathsubtract{\tkz@halfdeltaH}{\tkz@deltaY}% \global\let\tkz@dy\pgfmathresult \setcounter{tkz@cnt@temp}{\thetkz@cnt@lg}% \addtocounter{tkz@cnt@temp}{-1}% \path (\tkz@dx,\tkz@dy) coordinate(F\thetkz@cnt@temp);}% % % %<----------------------- Colorisation du fond ------------------------------> \tikzset{fondC/.style={fill = \cmdTAB@tbs@colorC}} \tikzset{fondL/.style={fill = \cmdTAB@tbs@colorL}} \tikzset{fondT/.style={fill = \cmdTAB@tbs@colorT}} \tikzset{fondV/.style={fill = \cmdTAB@tbs@colorV}} %\clip (T00) rectangle (T2\maxtkz@cnt@lg); \ifTAB@tbs@color \draw[fondC] (T01) rectangle (T1\maxtkz@cnt@lg); \draw[fondL] (T11) rectangle (T20); \draw[fondT] (T11) rectangle (T2\maxtkz@cnt@lg); \draw[fondV] (T00) rectangle (T11); \fi % %<-------------------Fin Colorisation du fond ------------------------------> % % %<--------------- Écriture des formules en colonne 1 -----------------------> \setcounter{tkz@cnt@lg}{-1}% \pgfmathsubtract{\cmdTAB@tbs@textw}{0.4}% \xdef\cmdTAB@tbs@textw{\pgfmathresult}% \foreach \ligne/\tkz@deltaH in {#2}{% \stepcounter{tkz@cnt@lg}% \ifTAB@tbs@help% \node[draw,fill=green!50,inner sep=1pt] at (F\number\value{tkz@cnt@lg}) {\footnotesize F\thetkz@cnt@lg}; \else \node[text width = \cmdTAB@tbs@textw cm,text centered,inner sep=0pt] at (F\thetkz@cnt@lg) {\ligne}; \fi}% %<------------------Cadre = true on trace tout sinon condition----------------> \ifTAB@tbs@nocadre% \foreach \x in {1}{\draw[line width = \cmdTAB@tbs@lw] (T\x 0) --(T\x \maxtkz@cnt@lg);}% \setcounter{tkz@cnt@temp}{\maxtkz@cnt@lg}% \addtocounter {tkz@cnt@temp}{-1}% \xdef\maxtkz@cnt@lg{\thetkz@cnt@temp}% \foreach \y in {1,...,\maxtkz@cnt@lg}{\draw[line width = \cmdTAB@tbs@lw] (T0\y) --(T2\y);}% \else \foreach \y in {0,...,\maxtkz@cnt@lg}{\draw[line width = \cmdTAB@tbs@lw] (T0\y) --(T2\y);}% \foreach \x in {0,1,2}{\draw[line width = \cmdTAB@tbs@lw] (T\x 0) --(T\x \maxtkz@cnt@lg);}% \fi %<------------ Première ligne et Nodes variations ----------------------------> \setcounter{tkz@cnt@cl}{0}% \pgfextractx{\tkz@XF}{\pgfpointanchor{F0}{center}}% \pgfextracty{\tkz@YF}{\pgfpointanchor{F0}{center}}% \foreach \x in {#3}{% \pgfmathparse{\cmdTAB@tbs@deltacl+\cmdTAB@tbs@lgt/2+% \cmdTAB@tbs@espcl*\thetkz@cnt@cl}% \global\let\tkz@dx\pgfmathresult \stepcounter{tkz@cnt@cl}% \ifTAB@tbs@help% \node[draw,fill=blue!50,inner sep=1pt] (L\number\value{tkz@cnt@cl})% at (\tkz@XF + \tkz@dx cm,\tkz@YF) {\footnotesize L\number\value{tkz@cnt@cl}};% \else \node (L\thetkz@cnt@cl) at (\tkz@XF + \tkz@dx cm,\tkz@YF) {\x};% \fi}% %<----------------------- help --------------------------------> \ifTAB@tbs@help% \foreach \colonne in {0,1,2}{% \foreach \ligne in {0,...,\maxtkz@cnt@lg}{\draw (T\colonne\ligne)% node[draw,fill=red!50,inner sep=1pt] {\textbf{\footnotesize T\colonne\ligne}};}}% \setcounter{tkz@cnt@temp}{\tkz@maxcl} \stepcounter{tkz@cnt@temp} \xdef\tkz@maxcl{\thetkz@cnt@temp}% \foreach \ligne in {0,...,\maxtkz@cnt@lg} {\foreach \colonne in {1,...,\tkz@maxcl}{% \draw[fill=red] (N\colonne\ligne) circle(2pt)% node[above right,red,inner sep=1pt] {\footnotesize N\colonne\ligne};}}% \fi }% fin de tkzTabInit %<-----------------------------------------------------------------------------> %<----------------------- Ligne de Signes -------------------------------------> %<----------------------- tkzTabLine -------------------------------------> \newcommand*\stripspaces[1]{% \strip@spaces{#1}} \newcommand\strip@spaces{\renewcommand\strip@spaces[1]}% \expandafter\strip@spaces{% \@firstofone{\expandafter\strip@lastspace\@firstofone #1\@nil} \@nil\@@nil} \@ifdefinable\strip@lastspace{% \def\strip@lastspace#1 \@nil#2\@@nil{\strip@nil#1\@nil\@@nil}} \@ifdefinable\strip@nil{% \def\strip@nil#1\@nil#2\@@nil{#1}} %<-----------------------------------------------------------------------------> \define@boolkey[TAB]{TL}{help}[true]{} \presetkeys[TAB]{TL}{help=false}{} %<-----------------------------------------------------------------------------> \newcommand*{\tkzTabLine}[2][]{% \setkeys[TAB]{TL}{#1}% \setcounter{tkz@cnt@lg}{\thetkz@cnt@line}% \stepcounter{tkz@cnt@line}% \setcounter{tkz@cnt@lgnext}{\thetkz@cnt@line}% \setcounter{tkz@cnt@cl}{1}% \setcounter{tkz@cnt@pair}{1}% \setcounter{tkz@cnt@impair}{1}% \ifTAB@TL@help% \foreach \x in {#2} {% \ifthenelse{\isodd{\value{tkz@cnt@cl}}}{% \path (N\thetkz@cnt@impair\thetkz@cnt@lg) --% node[draw,inner sep =1pt,midway,fill=yellow] {% \footnotesize Z\thetkz@cnt@impair\thetkz@cnt@lg}% (N\thetkz@cnt@impair\thetkz@cnt@lgnext); \stepcounter{tkz@cnt@impair}}{% \path (M\thetkz@cnt@pair\thetkz@cnt@lg)--% node[draw,inner sep =1pt,midway,fill=yellow] {% \footnotesize S\thetkz@cnt@pair\thetkz@cnt@lg}% (M\thetkz@cnt@pair\thetkz@cnt@lgnext); \stepcounter{tkz@cnt@pair}}% \stepcounter{tkz@cnt@cl}% }% \else \ifTAB@tbs@color% \draw(T1\thetkz@cnt@lg) rectangle (T2\thetkz@cnt@line);% \fi \foreach \x in {#2} {% \ifthenelse{\isodd{\value{tkz@cnt@cl}}}{% \path (N\thetkz@cnt@impair\thetkz@cnt@lg) --% coordinate[midway](Z\thetkz@cnt@impair\thetkz@cnt@lg)% (N\thetkz@cnt@impair\thetkz@cnt@lgnext); \ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{z}}{% \draw[line width = \cmdTAB@tbs@lw,t style]% (N\thetkz@cnt@impair\thetkz@cnt@lg) -- % (N\thetkz@cnt@impair\thetkz@cnt@lgnext); \node at (Z\thetkz@cnt@impair\thetkz@cnt@lg){$0$}; }{% \ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{}}{% % \path (N\thetkz@cnt@impair\thetkz@cnt@lg)--node[midway]{}% % (N\thetkz@cnt@impair\thetkz@cnt@lgnext); }{% \ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{t}}{% \draw[line width = \cmdTAB@tbs@lw,t style] (N\thetkz@cnt@impair\thetkz@cnt@lg) -- % (N\thetkz@cnt@impair\thetkz@cnt@lgnext); }{% \ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{d}}{% \draw[line width =\cmdTAB@tbs@lw,double style]% (N\thetkz@cnt@impair\thetkz@cnt@lg)--% (N\thetkz@cnt@impair\thetkz@cnt@lgnext); }{% \path (N\thetkz@cnt@impair\thetkz@cnt@lg)--% (N\thetkz@cnt@impair\thetkz@cnt@lgnext); \node at (Z\thetkz@cnt@impair\thetkz@cnt@lg){$\x$}; }% }}}\stepcounter{tkz@cnt@impair}% }{% \path (M\thetkz@cnt@pair\thetkz@cnt@lg)--% coordinate[midway](S\thetkz@cnt@pair\thetkz@cnt@lg)% (M\thetkz@cnt@pair\thetkz@cnt@lgnext);% \ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{h}}{% \setcounter{tkz@cnt@clnext}{\thetkz@cnt@pair}% \stepcounter{tkz@cnt@clnext}% \draw[h style](N\thetkz@cnt@pair\thetkz@cnt@lg) +(0.4pt,0) rectangle% (N\thetkz@cnt@clnext\thetkz@cnt@lgnext);}{% \node at (S\thetkz@cnt@pair\thetkz@cnt@lg) {$\x$}; }% \stepcounter{tkz@cnt@pair}% }% \stepcounter{tkz@cnt@cl}% }% end foreach \fi }% %<-----------------------------------------------------------------------------> %<---------------------------- Variations ---------------------------------> %<-----------------------------------------------------------------------------> %<----------------------- Macro pour tracer une flèche ------------------------> %<-----------------------------------------------------------------------------> \newcommand*{\tkzDrawArrow}{% \ifthenelse{\equal{\thetkz@cnt@zone}{0}}{% \setcounter{tkz@cnt@pred}{\thetkz@cnt@cl} \addtocounter{tkz@cnt@pred}{-1} \ifthenelse{\thetkz@cnt@temp>0}{% \addtocounter{tkz@cnt@pred}{-\thetkz@cnt@temp}% \setcounter{tkz@cnt@temp}{0}}{}% \ifTAB@VA@help% \draw[fill=orange] (FR\thetkz@cnt@pred\thetkz@cnt@lg) circle(2pt)% node[right,orange] {\footnotesize FR\thetkz@cnt@pred\thetkz@cnt@lg}; \draw[fill=orange] (FL\thetkz@cnt@cl\thetkz@cnt@lg)circle(2pt)% node[left,orange] {\footnotesize FL\thetkz@cnt@cl\thetkz@cnt@lg}; \else \draw[arrow style] (FR\thetkz@cnt@pred\thetkz@cnt@lg) to% (FL\thetkz@cnt@cl\thetkz@cnt@lg);% \fi }{% \setcounter{tkz@cnt@zone}{0}% }% }% %<-----------------------------------------------------------------------------> \define@boolkey[TAB]{VA}{help}[true]{} \define@cmdkey[TAB]{VA}{color}{} \presetkeys[TAB]{VA}{color=black,help=false}{} %<-----------------------------------------------------------------------------> \newcommand*{\tkzTabVar}[2][]{% \setkeys[TAB]{VA}{#1}% \setcounter{tkz@cnt@lg}{\thetkz@cnt@line}% \stepcounter{tkz@cnt@line}% \setcounter{tkz@cnt@lgnext}{\thetkz@cnt@line}% \begin{scope} \tikzset{every node/.style={inner sep =3pt}}% \setcounter{tkz@cnt@cl}{0}% \setcounter{tkz@cnt@aw}{0}% \setcounter{tkz@cnt@temp}{0}% \setcounter{tkz@cnt@arrow}{0}% \ifTAB@tbs@color% \draw (T1\thetkz@cnt@lg) rectangle (T2\thetkz@cnt@line);% \fi% %<----------------- Lecture des données et création des nodes ---------------> \foreach \x/\tl/\tr in {#2} {\stepcounter{tkz@cnt@aw}\stepcounter{tkz@cnt@cl}% %<------------------------------------------------------------------- D- ----> \ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{D-}}% {\draw[double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,low right] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tr\fi};% \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% }% %<------------------------------------------------------------------- D+ ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{D+}}% {\draw[double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,high right] (FR\thetkz@cnt@cl\thetkz@cnt@lg)% at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tr\fi};% \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% } %<------------------------------------------------------------------- +D ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{+D}}% {\draw[double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,high left] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tl\fi};% \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% }% %<------------------------------------------------------------------- +C ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{+C}}% {\draw[double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg)--(N\thetkz@cnt@cl\thetkz@cnt@lgnext);% \node[node style,high,on double] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tl\fi};% \node[node style,high,on double] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tl\fi};% \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% } %<------------------------------------------------------------------ -D -----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{-D}}% {\draw[double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,low left] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tl\fi};% \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% }% %<------------------------------------------------------------------ -C -----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{-C}}% {\draw[double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,low,on double] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tl\fi};% \node[node style,low,on double] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tl\fi};% \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% }% %<------------------------------------------------------------------- + ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{+}}% {\node[node style,high] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tl\fi}; \node[node style,high] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tl\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% } %<---------------------------------------------------------------- +V+ ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{+V+}}% {\node[node style,high left] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tl\fi}; \node[node style,high right] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tr\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% }% %<--------------------------------------------------------------- -V- ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{-V-}}% {\node[node style,low left] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tl\fi}; \node[node style,low right] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tr\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% }% %<-------------------------------------------------------------- -V+ ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{-V+}}% {\node[node style,low left] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tl\fi}; \node[node style,high right] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tr\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% } %<---------------------------------------------------------------- +V- ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{+V-}}% {\node[node style,high left] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tl\fi}; \node[node style,low right] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tr\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% } %<------------------------------------------------------------------- - ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{-}}% {\node[node style,low] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tl\fi}; \node[node style,low] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tl\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% }% %<------------------------------------------------------------------ -D+ ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{-D+}}% {\draw[line width =0.4pt,double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,low left] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tl\fi}; \node[node style,high right] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tr\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% } %<------------------------------------------------------------------ +D- ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{+D-}}% {\draw[double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,high left] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tl\fi};% \node[node style,low right] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tr\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% } %<----------------------------------------------------------------- -CD+ ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{-CD+}}% {\draw[double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,low,on double] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tl\fi}; \node[node style,high right,on double] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tr\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% } %<----------------------------------------------------------------- -CD- ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{-CD-}}% {\draw[double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,low,on double] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tl\fi}; \node[node style,low right,on double] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tr\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% } %<----------------------------------------------------------------- +CD- ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{+CD-}}% {\draw[double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,high,on double] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tl\fi}; \node[node style,low right,on double] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tr\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% } %<----------------------------------------------------------------- -DC+ ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{-DC+}}% {\draw[double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,low left,on double] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tl\fi}; \node[node style,high,on double] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tr\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% }% %<----------------------------------------------------------------- +DC- ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{+DC-}}% {\draw[line width =0.4pt,double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,high left,on double] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tl\fi}; \node[node style,low,on double] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tr\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% }% %<----------------------------------------------------------------- -DC- ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{-DC-}}% {\draw[double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,low left,on double] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tl\fi}; \node[node style,low,on double] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tr\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% }% %<----------------------------------------------------------------- +DC+ ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{+DC+}}% {\draw[double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) --(N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,high left,on double] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tl\fi}; \node[node style,high,on double] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tr\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% }% %<------------------------------------------------------------------ +D+ ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{+D+}}% {\draw[double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,high left,on double] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tl\fi}; \node[node style,high right,on double] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tr\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% }% %<------------------------------------------------------------------ -D- ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{-D-}}% {\draw[line width =0.4pt,double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,low left] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tl\fi}; \node[node style,low right] (FR\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tr\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}% }% %<------------------------------------------------------------------ R ------> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{R}}% {\stepcounter{tkz@cnt@temp}% }% %<------------------------------------------------------------------ +DH ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{+DH}}% {\draw[double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,high left] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tl\fi}; \setcounter{tkz@cnt@clnext}{\thetkz@cnt@cl}\stepcounter{tkz@cnt@clnext} \draw[h style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) rectangle (N\thetkz@cnt@clnext\thetkz@cnt@lgnext); \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}\stepcounter{tkz@cnt@zone}% }% %<------------------------------------------------------------------ -DH ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{-DH}}% {\draw[double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,low left] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@cl\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tl\fi}; \setcounter{tkz@cnt@clnext}{\thetkz@cnt@cl}\stepcounter{tkz@cnt@clnext}% \draw[h style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) rectangle (N\thetkz@cnt@clnext\thetkz@cnt@lgnext); \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}\stepcounter{tkz@cnt@zone}% }% %<------------------------------------------------------------------ +CH ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{+CH}}% {\setcounter{tkz@cnt@clnext}{\thetkz@cnt@cl}\stepcounter{tkz@cnt@clnext} \draw[h style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) rectangle (N\thetkz@cnt@clnext\thetkz@cnt@lgnext); \draw[double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,high,on double] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tl\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}\stepcounter{tkz@cnt@zone}% }% %<------------------------------------------------------------------ -CH ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{-CH}}% {\setcounter{tkz@cnt@clnext}{\thetkz@cnt@cl}\stepcounter{tkz@cnt@clnext}% \draw[h style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) rectangle (N\thetkz@cnt@clnext\thetkz@cnt@lgnext); \draw[line width =0.4pt,double style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,low,on double](FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tl\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}\stepcounter{tkz@cnt@zone}% }% %<------------------------------------------------------------------ +H ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{+H}}% {\setcounter{tkz@cnt@clnext}{\thetkz@cnt@cl}\stepcounter{tkz@cnt@clnext} \draw[h style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) rectangle (N\thetkz@cnt@clnext\thetkz@cnt@lgnext); \draw[]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,high,on double] (FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lg){\ifTAB@VA@help\else\tl\fi};% \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}\stepcounter{tkz@cnt@zone}% }% %<------------------------------------------------------------------ -H ----> {\ifthenelse{\equal{\expandafter\stripspaces\expandafter{\x}}{-H}}% {\setcounter{tkz@cnt@clnext}{\thetkz@cnt@cl}\stepcounter{tkz@cnt@clnext} \draw[h style]% (N\thetkz@cnt@cl\thetkz@cnt@lg) rectangle (N\thetkz@cnt@clnext\thetkz@cnt@lgnext); \draw[]% (N\thetkz@cnt@cl\thetkz@cnt@lg) -- (N\thetkz@cnt@cl\thetkz@cnt@lgnext); \node[node style,low,on double](FL\thetkz@cnt@cl\thetkz@cnt@lg) at (N\thetkz@cnt@aw\thetkz@cnt@lgnext){\ifTAB@VA@help\else\tl\fi}; \ifthenelse{\equal{\thetkz@cnt@arrow}{0}}{}{\tkzDrawArrow}\stepcounter{tkz@cnt@zone}% }{}% non prévu }}}}}}}}}}}}}}}}}}}}}}}}}}}}}% \stepcounter{tkz@cnt@arrow}}% end de la boucle %<-------------------------------------------------- Tracé des flèches ------> \end{scope}% }% fin de la macro variation %<-----------------------------------------------------------------------------> %<------------------------ Valeur Intermédiaire ----------------------------> %<-----------------------------------------------------------------------------> \define@boolkey[TAB] {VI} {draw}[true]{} \define@cmdkey [TAB] {VI} {remember}{} \presetkeys [TAB] {VI} {draw = false, remember= lastval}{} %<-----------------------------------------------------------------------------> \newcommand*{\tkzTabVal}[6][]{% \setkeys[TAB]{VI}{#1}% \setcounter{tkz@cnt@lg}{\thetkz@cnt@line}% \addtocounter{tkz@cnt@lg}{-1}% \pgfextractx{\tkz@XF}{\pgfpointanchor{L#2}{center}} \pgfextracty{\tkz@YF}{\pgfpointanchor{L#2}{center}} \pgfmathparse{\cmdTAB@tbs@espcl * (#4)*(#3-#2)}% \global\let\tkz@dx\pgfmathresult \node[inner sep = 0pt,fondL] (ANT) at (\tkz@XF + \tkz@dx cm,\tkz@YF) {#5}; \path coordinate (ANTa) at ([xshift=\tkz@dx cm]N#21); \path coordinate (ANTb) at ([xshift=\tkz@dx cm]N#2\thetkz@cnt@line); \path (intersection cs:% first line= {(FR#2\thetkz@cnt@lg)--(FL#3\thetkz@cnt@lg)},% second line={(ANTa)--(ANTb)}) node[node style,fondT](VAL){#6}; \path coordinate (\cmdTAB@VI@remember) at (VAL); \ifTAB@VI@draw% \draw[from style] (ANTa.center) to (VAL); \fi }% %-----------------------------------------------------------------------------> %<-----------------------------------------------------------------------------> %<-----------------------------------------------------------------------------> \define@boolkey[TAB] {IM} {draw}[true]{} \define@cmdkey [TAB] {IM} {remember}{} \presetkeys [TAB] {IM} {draw = false, remember= lastval}{} \newcommand*{\tkzTabIma}[5][]{% \setkeys[TAB]{IM}{#1}% \setcounter{tkz@cnt@lg}{\thetkz@cnt@line}% \addtocounter{tkz@cnt@lg}{-1}% \setcounter{tkz@cnt@lgnext}{\thetkz@cnt@line}% \path (intersection cs: first line = {(FR#2\thetkz@cnt@lg)--(FL#3\thetkz@cnt@lg)},% second line = {(N#4\thetkz@cnt@lg) --(N#4\thetkz@cnt@lgnext)}) node[node style,fondT](IMA){#5}; \path coordinate (\cmdTAB@IM@remember) at (IMA); \ifTAB@IM@draw% \draw[from style] (N#41) to (IMA); \fi }% %<-----------------------------------------------------------------------------> %<-----------------------------------------------------------------------------> %<-----------------------------------------------------------------------------> \newcommand*{\tkzTabImaFrom}[5][]{% \setkeys[TAB]{IM}{#1}% \setcounter{tkz@cnt@lg}{\thetkz@cnt@line}% \addtocounter{tkz@cnt@lg}{-1}% \path (intersection cs:% first line = {(FR#2\thetkz@cnt@lg)--(FL#3\thetkz@cnt@lg)},% second line={(#4)--([yshift=-0.5 cm]#4)}) node[node style,fondT](IMA){#5}; \path coordinate (\cmdTAB@IM@remember) at (IMA); \ifTAB@IM@draw \draw[from style] (#4) to (IMA);% \fi }% %<-----------------------------------------------------------------------------> %<-----------------------------------------------------------------------------> %<------------------------ tangente horizontale -----------------------------> % args 1--> options ; % 2--> tkz@cnt@cl debut fl ; % 3--> tkz@cnt@clnext fin de fl ;% % 4---> n°de val ; % 5----> image \define@cmdkey [TAB] {TA} {pos}[below]{} \define@cmdkey [TAB] {TA} {color}{} \define@boolkey [TAB] {TA} {draw}[true]{} \define@cmdkey [TAB] {TA} {remember}{} \presetkeys [TAB] {TA} {draw = false, color = black, pos = above, remember = lastval}{} %<-----------------------------------------------------------------------------> \newcommand*{\tkzTabTan}[5][]{% \setkeys[TAB]{TA}{#1}% \setcounter{tkz@cnt@lg}{\thetkz@cnt@line}% \addtocounter{tkz@cnt@lg}{-1}% \setcounter{tkz@cnt@lgnext}{\thetkz@cnt@line}% \path (intersection cs: first line = {(FR#2\thetkz@cnt@lg)--(FL#3\thetkz@cnt@lg)},% second line = {(N#4\thetkz@cnt@lg) --(N#4\thetkz@cnt@lgnext)}) coordinate(tgt); \draw[fill,color=\cmdTAB@TA@color] (tgt) circle (1pt); \node[\cmdTAB@TA@pos =1pt] at (tgt) {#5}; \path coordinate (\cmdTAB@TA@remember) at (tgt); \draw[arrow style] (tgt) -- ++(.75,0); \draw[arrow style] (tgt) -- ++(-.75,0); \ifTAB@TA@draw% \draw[from style] (N#41) to (tgt); \fi }% %<-----------------------------------------------------------------------------> %<-----------------------------------------------------------------------------> %<-----------------------------------------------------------------------------> \newcommand*{\tkzTabTanFrom}[5][]{% \setkeys[TAB]{TA}{#1}% \setcounter{tkz@cnt@lg}{\thetkz@cnt@line}% \addtocounter{tkz@cnt@lg}{-1}% \setcounter{tkz@cnt@lgnext}{\thetkz@cnt@line}% \path (intersection cs: first line = {(FR#2\thetkz@cnt@lg)--(FR#3\thetkz@cnt@lg)},% second line = {(#4) --([yshift=-0.5 cm]#4)}) coordinate(tgt); \draw[fill,color=\cmdTAB@TA@color] (tgt) circle (1pt); \node[\cmdTAB@TA@pos = 1pt] at (tgt) {#5}; \path coordinate (\cmdTAB@TA@remember) at (tgt); \draw[arrow style] (tgt) -- ++(.75,0); \draw[arrow style] (tgt) -- ++(-.75,0); \ifTAB@TA@draw% \draw[from style] (#4) -- (tgt);% \fi }% %<-----------------------------------------------------------------------------> %<-----------------------------------------------------------------------------> %<------------------------ dérivée droite gauche ------------------------------> \newcommand*{\tkzTabSlope}[1]{% \foreach \x/\y/\z in {#1}{% \node[left = 3pt] at (Z\x 1) {\scriptsize $\y$}; \node[right = 3pt] at (Z\x 1) {\scriptsize $\z$}; }% } %<-----------------------------------------------------------------------------> %<-----------------------------------------------------------------------------> %<-----------------------------------------------------------------------------> \newcommand*{\tkzTab}[5][]{% \tkzTabInit[#1]{#2}{#3}% \tkzTabLine{#4}% \tkzTabVar{#5}% } %<---------------------------------The End ------------------------------------> \endinput