From 86350e092bc3d5102158f1108a9877dfdd758376 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 2 Mar 2009 17:12:31 +0000 Subject: new tikz package tkz-tab git-svn-id: svn://tug.org/texlive/trunk@12287 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/tkz-tab/tkz-tab.sty | 780 ++++++++++++++++++++++++ 1 file changed, 780 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/tkz-tab/tkz-tab.sty (limited to 'Master/texmf-dist/tex/latex/tkz-tab/tkz-tab.sty') 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..76522585e38 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tkz-tab/tkz-tab.sty @@ -0,0 +1,780 @@ +% $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 -- cgit v1.2.3