summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/tkz-tab
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-04-11 22:30:16 +0000
committerKarl Berry <karl@freefriends.org>2020-04-11 22:30:16 +0000
commit61fc9e10437a016b9bd9a959fb64640d2e1a7047 (patch)
treefaf7163941125859a9ee3dd7440f4ae042fd6746 /Master/texmf-dist/tex/latex/tkz-tab
parentc22890c46ab250bf72693f78d290576c71c3f46b (diff)
tkz-tab (10apr20)
git-svn-id: svn://tug.org/texlive/trunk@54662 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/tkz-tab')
-rw-r--r--Master/texmf-dist/tex/latex/tkz-tab/tkz-tab.sty927
1 files changed, 927 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/tkz-tab/tkz-tab.sty b/Master/texmf-dist/tex/latex/tkz-tab/tkz-tab.sty
new file mode 100644
index 00000000000..e9715151ae1
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-tab/tkz-tab.sty
@@ -0,0 +1,927 @@
+% Copyright 2020 Alain Matthes
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX version 2005/12/01 or later.
+% This work has the LPPL maintenance status “maintained”.
+% The Current Maintainer of this work is Alain Matthes.
+% Objet : Création de tableaux (signes et variations)
+%<----------------------------------------------------------------------------->
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{tkz-tab}[2020/04/08 v2.1c variations (ctan version)]
+%<----------------------------------------------------------------------------->
+\RequirePackage{ifthen}
+\RequirePackage{xkeyval}[2005/11/25]
+\RequirePackage{tikz}
+\usetikzlibrary{arrows,patterns}
+%<------------------------------ Initialisation ----------------------------->
+
+%<------------------------------ Styles ----------------------------->
+%<------------------------------ Colors ----------------------------->
+\def\tkzTabDefaultWritingColor{black}
+\def\tkzTabDefaultBackgroundColor{white}
+\def\tkzTabDefaultLineWidth{0.4pt}
+\def\tkzTabDefaultArrowStyle{latex'}
+\def\tkzTabDefaultSep{2pt}
+\def\cmdTAB@backgroundcolor{white}
+\def\cmdTAB@writecolor{black}
+\def\cmdTAB@TTS@doubledistance{1pt}
+\def\cmdTAB@TG@hcolor{gray}
+\let\cmdTAB@TG@patterncolor\cmdTAB@writecolor
+\def\cmdTAB@TG@patternstyle{north west lines}
+\let\cmdTAB@TG@color\cmdTAB@writecolor
+\let\cmdTAB@tbs@colorT\cmdTAB@backgroundcolor
+\let\cmdTAB@VA@color\cmdTAB@writecolor
+\let\cmdTAB@arrowcolor\cmdTAB@writecolor
+%<-------------------------------------------------------------------------->
+\tikzset{node style/.style = {inner sep = \tkzTabDefaultSep,
+ outer sep = \tkzTabDefaultSep,
+ fill = \tkzTabDefaultBackgroundColor}}
+\tikzset{low left/.style = {above left = \tkzTabDefaultSep}}
+\tikzset{low right/.style = {above right = \tkzTabDefaultSep}}
+\tikzset{high right/.style = {below right = \tkzTabDefaultSep}}
+\tikzset{high left/.style = {below left = \tkzTabDefaultSep}}
+\tikzset{low/.style = {above = \tkzTabDefaultSep}}
+\tikzset{high/.style = {below = \tkzTabDefaultSep}}
+\tikzset{on double/.style = {fill = \tkzTabDefaultBackgroundColor}}
+\tikzset{tan style/.style = {> = \tkzTabDefaultArrowStyle,
+ ->,
+ color = \tkzTabDefaultWritingColor}}
+\tikzset{arrow style/.style = {\tkzTabDefaultWritingColor,
+ ->,
+ > = \tkzTabDefaultArrowStyle,
+ shorten > = \tkzTabDefaultSep,
+ shorten < = \tkzTabDefaultSep}}
+\tikzset{from style/.style = {shorten > = \tkzTabDefaultSep,
+ shorten < = \tkzTabDefaultSep,
+ line width = \tkzTabDefaultLineWidth,
+ > = \tkzTabDefaultArrowStyle,
+ ->,
+ draw = \tkzTabDefaultWritingColor,
+ dotted}}
+
+\tikzset{t style/.style = {style = dotted,
+ draw = \tkzTabDefaultWritingColor}}
+
+\tikzset{h style/.style = {pattern = north west lines,
+ pattern color = \tkzTabDefaultWritingColor}}
+
+\tikzset{double style/.append style = {%
+ draw = \tkzTabDefaultWritingColor,
+ double = \tkzTabDefaultBackgroundColor}}
+%<--------------------- Colorisation du fond ------------------------------>
+\tikzset{fondC/.style={fill = \tkzTabDefaultBackgroundColor}}
+\tikzset{fondL/.style={fill = \tkzTabDefaultBackgroundColor}}
+\tikzset{fondT/.style={fill = \tkzTabDefaultBackgroundColor}}
+\tikzset{fondV/.style={fill = \tkzTabDefaultBackgroundColor}}
+%<------------------------------ 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}
+%<--------------------------------------------------------------------------->
+\define@cmdkey [TAB] {TTC} {color}{}
+\define@cmdkey [TAB] {TTC} {backgroundcolor}{}
+\presetkeys [TAB] {TTC} {color = black,
+ backgroundcolor = white}{}
+\newcommand*{\tkzTabColors}[1][]{%
+\setkeys[TAB]{TTC}{#1}
+\let\tkzTabDefaultWritingColor\cmdTAB@TTC@color
+\let\tkzTabDefaultBackgroundColor\cmdTAB@TTC@backgroundcolor
+\let\cmdTAB@backgroundcolor\cmdTAB@TTC@backgroundcolor
+\let\cmdTAB@writecolor\cmdTAB@TTC@color
+\let\cmdTAB@doublecolor\cmdTAB@TTC@backgroundcolor
+\let\cmdTAB@patterncolor\cmdTAB@TTC@color
+\let\cmdTAB@tcolor\cmdTAB@TTC@color
+\tikzset{fondC/.style={fill = \tkzTabDefaultBackgroundColor}}
+\tikzset{fondL/.style={fill = \tkzTabDefaultBackgroundColor}}
+\tikzset{fondT/.style={fill = \tkzTabDefaultBackgroundColor}}
+\tikzset{fondV/.style={fill = \tkzTabDefaultBackgroundColor}}
+}
+%<--------------------------------------------------------------------------->
+%<--------------------------------------------------------------------------->
+\define@boolkey [TAB] {TTS} {crosslines}[true]{}
+\define@cmdkey [TAB] {TTS} {doubledistance}{}
+\define@cmdkey [TAB] {TTS} {lw}{}
+\define@cmdkey [TAB] {TTS} {doublecolor}{}
+\define@cmdkey [TAB] {TTS} {color}{}
+\define@cmdkey [TAB] {TTS} {backgroundcolor}{}
+\define@cmdkey [TAB] {TTS} {patterncolor}{}
+\define@cmdkey [TAB] {TTS} {patternstyle}{}
+\define@cmdkey [TAB] {TTS} {tstyle}{}
+\define@cmdkey [TAB] {TTS} {tcolor}{}
+\define@cmdkey [TAB] {TTS} {tanstyle}{}
+\define@cmdkey [TAB] {TTS} {tanarrowstyle}{}
+\define@cmdkey [TAB] {TTS} {tancolor}{}
+\define@cmdkey [TAB] {TTS} {tanwidth}{}
+\define@cmdkey [TAB] {TTS} {fromstyle}{}
+\define@cmdkey [TAB] {TTS} {fromarrowstyle}{}
+\define@cmdkey [TAB] {TTS} {fromcolor}{}
+\define@cmdkey [TAB] {TTS} {fromwidth}{}
+\define@cmdkey [TAB] {TTS} {twidth}{}
+\define@cmdkey [TAB] {TTS} {hcolor}{}
+\define@cmdkey [TAB] {TTS} {hopacity}{}
+\define@cmdkey [TAB] {TTS} {arrowcolor}{}
+\define@cmdkey [TAB] {TTS} {arrowstyle}{}
+\define@cmdkey [TAB] {TTS} {arrowlinewidth}{}
+%<--------------------------------------------------------------------------->
+\presetkeys [TAB] {TTS} {doubledistance = 1pt,
+ doublecolor = \tkzTabDefaultBackgroundColor,
+ lw = \tkzTabDefaultLineWidth,
+ color = \tkzTabDefaultWritingColor,
+ backgroundcolor = \tkzTabDefaultBackgroundColor,
+ patterncolor = \tkzTabDefaultWritingColor,
+ patternstyle = north west lines,
+ tstyle = dotted,
+ tcolor = \tkzTabDefaultWritingColor,
+ tanarrowstyle = \tkzTabDefaultArrowStyle,
+ tanstyle = ->,
+ tancolor = \tkzTabDefaultWritingColor,
+ tanwidth = \tkzTabDefaultLineWidth,
+ fromarrowstyle = \tkzTabDefaultArrowStyle,
+ fromstyle = ->,
+ fromcolor = \tkzTabDefaultWritingColor,
+ fromwidth = \tkzTabDefaultLineWidth,
+ twidth = \tkzTabDefaultLineWidth,
+ hcolor = \tkzTabDefaultWritingColor,
+ hopacity = 0.4,
+ crosslines = false,
+ arrowcolor = \tkzTabDefaultWritingColor,
+ arrowstyle = \tkzTabDefaultArrowStyle,
+ arrowlinewidth = \tkzTabDefaultLineWidth}{}
+%<--------------------------------------------------------------------------->
+\newcommand*{\tkzTabSetup}[1][]{%
+\setkeys[TAB]{TTS}{#1}
+\tikzset{from style/.append style = {line width = \cmdTAB@TTS@fromwidth,
+ > = \cmdTAB@TTS@fromarrowstyle,
+ \cmdTAB@TTS@fromstyle,
+ \cmdTAB@TTS@fromcolor}}
+
+\tikzset{tan style/.style = {\cmdTAB@TTS@tanstyle,
+ > = \cmdTAB@TTS@tanarrowstyle,
+ \cmdTAB@TTS@tancolor}}
+
+\tikzset{double style/.append style = {%
+ draw = \cmdTAB@TTS@color,
+ double = \cmdTAB@TTS@doublecolor,
+ double distance = \cmdTAB@TTS@doubledistance,
+ line width = \cmdTAB@TTS@lw}}
+\tikzset{t style/.style = {style = \cmdTAB@TTS@tstyle,
+ draw = \cmdTAB@TTS@tcolor,
+ line width = \cmdTAB@TTS@twidth}}
+\tikzset{arrow style/.append style = {\cmdTAB@TTS@arrowcolor,
+ > = \cmdTAB@TTS@arrowstyle,
+ line width = \cmdTAB@TTS@arrowlinewidth}}
+\tikzset{node style/.append style = { fill = fondpaille}}
+\tikzset{fondC/.style={fill = \cmdTAB@TTS@backgroundcolor}}
+\tikzset{fondL/.style={fill = \cmdTAB@TTS@backgroundcolor}}
+\tikzset{fondT/.style={fill = \cmdTAB@TTS@backgroundcolor}}
+\tikzset{fondV/.style={fill = \cmdTAB@TTS@backgroundcolor}}
+\ifTAB@TTS@crosslines%
+ \tikzset{h style/.style = {pattern = north west lines,
+ pattern color = \cmdTAB@TTS@patterncolor}}
+\else
+ \tikzset{h style/.style = {fill = \cmdTAB@TTS@patterncolor!50,
+ opacity = \cmdTAB@TTS@hopacity}}
+\fi
+}
+%<--------------------- 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 = \tkzTabDefaultLineWidth,
+ colorC = \tkzTabDefaultBackgroundColor,
+ colorL = \tkzTabDefaultBackgroundColor,
+ colorT = \tkzTabDefaultBackgroundColor,
+ colorV = \tkzTabDefaultBackgroundColor,
+ 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@tab@dx\pgfmathresult
+ \pgfmathdivide{\tkz@deltaH}{2}%
+ \global\let\tkz@halfdeltaH\pgfmathresult
+ \pgfmathsubtract{\tkz@halfdeltaH}{\tkz@deltaY}%
+ \global\let\tkz@tab@dy\pgfmathresult
+ \setcounter{tkz@cnt@temp}{\thetkz@cnt@lg}%
+ \addtocounter{tkz@cnt@temp}{-1}%
+ \path (\tkz@tab@dx,\tkz@tab@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}}
+\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%
+\draw[line width = \cmdTAB@tbs@lw] (T10) --(T1\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 {1,...,\maxtkz@cnt@lg}{\draw[line width = \cmdTAB@tbs@lw] (T0\y) --(T2\y);}%
+\draw[line width = \cmdTAB@tbs@lw] (T00) rectangle (T2\maxtkz@cnt@lg);
+\draw[line width = \cmdTAB@tbs@lw] (T10) -- (T1\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@tab@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@tab@dx cm,\tkz@YF) {\footnotesize L\number\value{tkz@cnt@cl}};%
+ \else
+ \node (L\thetkz@cnt@cl) at (\tkz@XF + \tkz@tab@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][]{%
+ \makeatletter
+ \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}}{}}{%
+ }{%
+ \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]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@impair\thetkz@cnt@lg)--%
+ ([yshift = \cmdTAB@tbs@lw/2] 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}%
+ \pgfmathparse{\cmdTAB@TTS@doubledistance/2+\cmdTAB@tbs@lw}
+ \global\let\tkz@deltax\pgfmathresult
+ \fill[h style]([xshift=\tkz@deltax,yshift=-\cmdTAB@tbs@lw/2]%
+ N\thetkz@cnt@pair\thetkz@cnt@lg)
+ rectangle%
+ ([xshift=-\tkz@deltax,yshift=\cmdTAB@tbs@lw/2]%
+ 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
+ \makeatother
+}%
+%<--------------------------------------------------------------------------->
+%<---------------------------- Variations ------------------------------->
+%<--------------------------------------------------------------------------->
+%<----------------------- Macro pour tracer une flèche ---------------------->
+%<--------------------------------------------------------------------------->
+\newcommand*{\tkzDrawArrow}{%
+\makeatletter
+\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}%
+ }%
+\makeatother
+}%
+%<--------------------------------------------------------------------------->
+\define@boolkey[TAB]{VA}{help}[true]{}
+\define@cmdkey[TAB]{VA}{color}{}
+\presetkeys[TAB]{VA}{color = \tkzTabDefaultWritingColor,
+ 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}%
+\pgfmathparse{\cmdTAB@TTS@doubledistance/2+\cmdTAB@tbs@lw}
+\global\let\tkz@deltax\pgfmathresult
+
+\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]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) --%
+ ([yshift = \cmdTAB@tbs@lw/2] 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]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) --%
+ ([yshift = \cmdTAB@tbs@lw/2] 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]%
+ ([yshift=-\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) -- ([yshift=\cmdTAB@tbs@lw/2] 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]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg)--%
+ ([yshift = \cmdTAB@tbs@lw/2] 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]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) --%
+ ([yshift = \cmdTAB@tbs@lw/2] 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]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) --%
+ ([yshift = \cmdTAB@tbs@lw/2] 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 =\cmdTAB@tbs@lw,double style]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) --%
+ ([yshift = \cmdTAB@tbs@lw/2] 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]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) --%
+ ([yshift = \cmdTAB@tbs@lw/2] 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]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) --%
+ ([yshift = \cmdTAB@tbs@lw/2] 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]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) --%
+ ([yshift = \cmdTAB@tbs@lw/2] 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]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) --%
+ ([yshift = \cmdTAB@tbs@lw/2] 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]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) -- %
+ ([yshift = \cmdTAB@tbs@lw/2] 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[double style]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) -- %
+ ([yshift = \cmdTAB@tbs@lw/2] 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]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) -- %
+ ([yshift = \cmdTAB@tbs@lw/2] 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]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) --%
+ ([yshift = \cmdTAB@tbs@lw/2] 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]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) -- %
+ ([yshift = \cmdTAB@tbs@lw/2] 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[double style]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) -- %
+ ([yshift = \cmdTAB@tbs@lw/2] 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]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) -- %
+ ([yshift = \cmdTAB@tbs@lw/2] 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}
+ \fill[h style]%
+ ([xshift=\tkz@deltax] 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]%
+ ([yshift=-\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) --%
+ ([yshift=\cmdTAB@tbs@lw/2] 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}%
+ \fill[h style]%
+ ([xshift=\tkz@deltax] 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}
+\fill[h style]%
+(N\thetkz@cnt@cl\thetkz@cnt@lg)%
+ rectangle%
+ (N\thetkz@cnt@clnext\thetkz@cnt@lgnext);
+ \draw[double style]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) --%
+ ([yshift = \cmdTAB@tbs@lw/2] 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}%
+ \fill[h style]%
+ ([xshift=\tkz@deltax] N\thetkz@cnt@cl\thetkz@cnt@lg)%
+ rectangle%
+ (N\thetkz@cnt@clnext\thetkz@cnt@lgnext);
+ \draw[double style]%
+ ([yshift = -\cmdTAB@tbs@lw/2] N\thetkz@cnt@cl\thetkz@cnt@lg) --%
+ ([yshift = \cmdTAB@tbs@lw/2] 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}
+ \fill[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}
+ \fill[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@tab@dx\pgfmathresult
+\node[inner sep = 0pt,fondL] (ANT) at (\tkz@XF + \tkz@tab@dx cm,\tkz@YF) {#5};
+\path coordinate (ANTa) at ([xshift=\tkz@tab@dx cm]N#21);
+\path coordinate (ANTb) at ([xshift=\tkz@tab@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 = \tkzTabDefaultWritingColor,
+ 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[tan style] (tgt) -- ++(.75,0);
+\draw[tan 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
+