summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/tkz-linknodes
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-03-02 17:13:25 +0000
committerKarl Berry <karl@freefriends.org>2009-03-02 17:13:25 +0000
commit33317ea7b0c925bdfb50d5e596ceaf0d22e49c1b (patch)
treec1aece5cb9f548a6ad46e1d3965a4af66e58ea63 /Master/texmf-dist/tex/latex/tkz-linknodes
parent86350e092bc3d5102158f1108a9877dfdd758376 (diff)
new tikz package tkz-linknodes (1mar09)
git-svn-id: svn://tug.org/texlive/trunk@12288 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/tkz-linknodes')
-rw-r--r--Master/texmf-dist/tex/latex/tkz-linknodes/tkz-linknodes.sty229
1 files changed, 229 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/tkz-linknodes/tkz-linknodes.sty b/Master/texmf-dist/tex/latex/tkz-linknodes/tkz-linknodes.sty
new file mode 100644
index 00000000000..ab3aadd2628
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/tkz-linknodes/tkz-linknodes.sty
@@ -0,0 +1,229 @@
+% tkz-linknodes.sty 2009-02-28 alain matthes
+% encoding : utf8
+% linknodesdoc.tex
+% Created by Alain Matthes on 2008-02-28.
+% 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-linknodes.sty'' is the english doc of tkz-linknodes
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% tkz-linknodes.sty encodage : utf8 %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Créé par Alain Matthes le 12-10-2007. %
+% d'après une idée et avec l'aide de Philippe Ivaldi %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% 22/08/2008
+%% Objet : création de flèches pour montrer des opérateurs
+%% aritmétiques dans des environnements comme "aligned"
+%<--------------------------------------------------------------------------->
+%<--------------------------------------------------------------------------->
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{tkz-linknodes}[2008/08/22 v1.0c tkz-linknodes]
+\RequirePackage{etex}
+\RequirePackage{ifthen}
+\RequirePackage{xkeyval}[2005/11/25]
+\RequirePackage{tikz}[2007/06/07]
+\RequirePackage{amsmath}
+\usetikzlibrary{arrows}
+%<--------------------------------------------------------------------------->
+% Style
+%<--------------------------------------------------------------------------->
+\tikzset{ArrowStyle/.style={>=latex,->,text=black}}
+\tikzset{LabelStyle/.style={pos=0.25,right}}
+\tikzset{NodeStyle/.style={}}
+%<--------------------------------------------------------------------------->
+\define@cmdkey [TK] {SUM} {margin}{}
+\define@cmdkey [TK] {SUM} {dy}{}
+\presetkeys [TK] {SUM} {margin = 2 cm,%
+ dy = 1.5pt}{}%
+%<--------------------------------------------------------------------------->
+\newcommand*{\SetUpOpEnv}[1][]{%
+ \setkeys [TK] {SUM} {#1}%
+ \presetkeys [TK] {node} {margin = \cmdTK@SUM@margin,%
+ dy = \cmdTK@SUM@dy}{}%
+}%
+%<--------------------------------------------------------------------------->
+% Init
+%<--------------------------------------------------------------------------->
+\newdimen\p@intx
+\newdimen\p@inty
+\newdimen\p@intCx
+\newdimen\p@intCy
+\newdimen\p@intNx
+\newdimen\p@intNy
+%<--------------------------------------------------------------------------->
+\newcounter{C@NumTab}\setcounter{C@NumTab}{0}
+\newcounter{C@NumGroup}\setcounter{C@NumGroup}{0}
+\newcounter{C@NextNode}\setcounter{C@NextNode}{0}
+\newcounter{NumC@Node}\setcounter{NumC@Node}{0}
+\newcounter{NumC@Stop}\setcounter{NumC@Stop}{0}
+\newcounter{C@CurrentStop}\setcounter{C@CurrentStop}{0}
+\newcounter{C@CurrentNode}\setcounter{C@CurrentNode}{0}
+\newcounter{C@CurrentGroup}\setcounter{C@CurrentGroup}{0}
+%<--------------------------------------------------------------------------->
+\newboolean{B@FirstLink}\setboolean{B@FirstLink}{true}
+\newboolean{B@NewGroup}\setboolean{B@NewGroup}{false}
+\newboolean{B@DeltaBegin}\setboolean{B@DeltaBegin}{false}
+\newboolean{B@DeltaEnd}\setboolean{B@DeltaEnd}{false}
+%<--------------------------------------------------------------------------->
+\newcommand*{\@SetTab}{%
+ \ifnum \value{C@NumTab}>25\relax%
+ \setcounter{C@NumTab}{1}%
+ \else%
+ \stepcounter{C@NumTab}%
+ \fi%
+ \setcounter{C@NumGroup}{0}%
+ \newcommand*{\PrefixCurrentTab}{\alph{C@NumTab}}
+ \setboolean{B@FirstLink}{true}
+ \setboolean{B@NewGroup}{false}
+ \setcounter{C@NumGroup}{0}
+ \setcounter{C@CurrentGroup}{0}
+ \setcounter{NumC@Node}{0}
+ \setcounter{NumC@Stop}{0}
+ \setcounter{C@NextNode}{0}
+ \setcounter{C@CurrentStop}{0}
+ \setcounter{C@CurrentNode}{0}
+}%
+%<--------------------------------------------------------------------------->
+\newcommand*{\@CreateCurrentStop}[1]{%
+ \@ifundefined{c@C@Stop\@alph{#1}}{%
+ \newcounter{C@Stop\@alph{#1}}\stepcounter{NumC@Stop}}{}%
+ \setcounter{C@Stop\@alph{#1}}{0}%
+}
+%<--------------------------------------------------------------------------->
+\newcommand*{\@CreateCurrentNode}[1]{%
+ \@ifundefined{c@C@Node\@alph{#1}}{%
+ \newcounter{C@Node\@alph{#1}}\stepcounter{NumC@Node}}{}%
+ \setcounter{C@Node\@alph{#1}}{0}%
+}%
+%<--------------------------------------------------------------------------->
+\newcommand*{\@CreateNewGroup}{%
+ \stepcounter{C@NumGroup}%
+ \@CreateCurrentStop{\theC@NumGroup}%
+ \@CreateCurrentNode{\theC@NumGroup}%
+}%
+%<--------------------------------------------------------------------------->
+\newcommand*{\AddNode}[1][1]{%
+ \setcounter{C@CurrentGroup}{#1}%
+ \ifnum \value{C@NumGroup}<#1\relax%
+ \@ifundefined{c@C@Node\@alph{#1}}{%
+ \@CreateNewGroup}{%
+ \stepcounter{C@NumGroup}%
+ \setcounter{C@Node\@alph{#1}}{0}%
+ \setcounter{C@Stop\@alph{#1}}{0}%
+ }%
+ \fi%
+ \stepcounter{C@Node\@alph{#1}}%
+ \stepcounter{C@Stop\@alph{#1}}%
+ \begin{tikzpicture}[remember picture]%
+ \node[NodeStyle]%
+ (\PrefixCurrentTab-\theC@CurrentGroup-\@nameuse{theC@Node\@alph{#1}}){};%
+ \end{tikzpicture}%
+\ignorespaces
+}%
+%<--------------------------------------------------------------------------->
+%<--------------------------------------------------------------------------->
+%<--------------------------------------------------------------------------->
+%<--------------------------------------------------------------------------->
+\newcommand*{\@NewNextNode}{%
+ \setcounter{C@NextNode}{\value{C@CurrentNode}}%
+ \stepcounter{C@NextNode}}%
+%<--------------------------------------------------------------------------->
+\newcommand*{\@UseNewGroup}[1]{% dépend du niveau
+ \setcounter{C@CurrentNode}{1}%
+ \setcounter{C@CurrentStop}{\value{C@Stop\@alph{#1}}}}%
+%<--------------------------------------------------------------------------->
+\define@cmdkey [TK] {node} {margin}{}%
+\define@cmdkey [TK] {node} {dy}{}%
+\presetkeys [TK] {node} {dy = 1.5pt,%
+ margin = 2 cm}{}%
+%<--------------------------------------------------------------------------->
+\newcommand{\LinkNodes}[2][]{%
+\setkeys[TK]{node}{#1}%
+\ifthenelse{\boolean{B@FirstLink}}{\setcounter{C@CurrentGroup}{1}%
+\setboolean{B@NewGroup}{false}%
+\@UseNewGroup{\theC@CurrentGroup}\@NewNextNode%
+\setboolean{B@DeltaBegin}{false}}{%
+\ifthenelse{\boolean{B@NewGroup}}{%
+\setboolean{B@DeltaBegin}{false}}{\setboolean{B@DeltaBegin}{true}}}%
+\def\TGCN{\PrefixCurrentTab-\theC@CurrentGroup-\theC@CurrentNode}%
+\def\TGNN{\PrefixCurrentTab-\theC@CurrentGroup-\theC@NextNode}%
+\begin{tikzpicture}[remember picture,overlay]%
+\pgfextractx{\pgf@x}{\pgfpointanchor{\TGCN}{center}}%
+\pgfextracty{\pgf@y}{\pgfpointanchor{\TGCN}{center}}%
+\p@intCx\pgf@x\p@intCy\pgf@y%
+\pgfextractx{\pgf@x}{\pgfpointanchor{\TGNN}{center}}%
+\pgfextracty{\pgf@y}{\pgfpointanchor{\TGNN}{center}}%
+\p@intNx\pgf@x\p@intNy\pgf@y%
+\p@inty\p@intCy\p@intx\linewidth%
+\advance\p@intx by-\cmdTK@node@margin%
+\ifthenelse{\boolean{B@FirstLink}}{%
+\setboolean{B@FirstLink}{false}%
+\xdef\lastp@intx{\p@intCx}%
+\global\let\lastp@intx\lastp@intx}{}%
+\ifthenelse{\boolean{B@NewGroup}}{\xdef\lastp@inty{\p@intCy}%
+\global\let\lastp@inty\lastp@inty}{\xdef\lastp@inty{\p@inty}%
+\global\let\lastp@inty\lastp@inty}%
+\ifthenelse{\value{C@NextNode}=\value{C@CurrentStop}}{%
+\setboolean{B@DeltaEnd}{false}}{\setboolean{B@DeltaEnd}{true}}%
+\ifthenelse{\boolean{B@DeltaBegin}}{\advance\p@inty by -\cmdTK@node@dy}{}%
+%
+\path[coordinate] (\lastp@intx,\lastp@inty) coordinate(Begin)
+ (\p@intx,\lastp@inty) coordinate(Inter);%
+\ifthenelse{\boolean{B@DeltaEnd}}{%
+\path[coordinate] ([yshift=\cmdTK@node@dy]\TGNN.center)coordinate(End);}%
+{\path[coordinate](\TGNN.center) coordinate(End);}%
+%
+\draw[ArrowStyle] (Begin)--(Inter)|-(End) node[LabelStyle]{#2};%
+%
+\xdef\lastp@inty{\p@intCy}\global\let\lastp@inty\lastp@inty%
+\ifthenelse{\value{C@NextNode}=\value{C@CurrentStop}}{%
+\ifthenelse{\value{C@CurrentGroup}<\value{C@NumGroup}}{%
+\global\B@NewGrouptrue\stepcounter{C@CurrentGroup}%
+\@UseNewGroup{\theC@CurrentGroup}\@NewNextNode}{}}{\stepcounter{C@CurrentNode}%
+\@NewNextNode}%
+\end{tikzpicture}%
+\setboolean{B@FirstLink}{false}%
+\ignorespaces
+}%
+%<--------------------------------------------------------------------------->
+\newcommand*{\UpGroup}[1][1]{%
+ \stepcounter{C@CurrentGroup}%
+ \setboolean{B@NewGroup}{true}%
+}%
+%<--------------------------------------------------------------------------->
+\newcommand*{\UpNode}[1][1]{%
+ \addtocounter{C@CurrentNode}{#1}
+}
+%<--------------------------------------------------------------------------->
+\define@cmdkey [TK] {NL} {margin}{}
+\define@cmdkey [TK] {NL} {dy}{}
+\presetkeys [TK] {NL} {margin = 2 cm,
+ dy = 1.5pt}{}
+%<--------------------------------------------------------------------------->
+\newenvironment{NodesList}[1][]{%
+ \setkeys [TK] {NL} {#1}
+ \presetkeys [TK] {node} {margin = \cmdTK@NL@margin,
+ dy = \cmdTK@NL@dy}{}%
+ \@SetTab
+ \@CreateNewGroup
+ \stepcounter{C@CurrentGroup}%
+ }{}%
+%<--------------------------------------------------------------------------->
+%<--------------------------------------------------------------------------->
+\endinput