diff options
author | Karl Berry <karl@freefriends.org> | 2010-10-29 00:31:31 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-10-29 00:31:31 +0000 |
commit | 6bc1f5497cfb2f56d65c80a4c36ea3bad6dc046c (patch) | |
tree | f7751da75030fb1e06653eeb44e579fcee09c65f /Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs | |
parent | ed0c7c756e441b2d2ba3633da233fc24361ac0d3 (diff) |
pgf 2.10 (28oct10)
git-svn-id: svn://tug.org/texlive/trunk@20236 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs')
14 files changed, 1242 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/basics.pdf b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/basics.pdf Binary files differnew file mode 100644 index 00000000000..7e2a07930b2 --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/basics.pdf diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/basics.tex b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/basics.tex new file mode 100644 index 00000000000..f194c9eaf56 --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/basics.tex @@ -0,0 +1,125 @@ +% Some basic examples for signal flow diagrams. +% +% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany +% Version: 0.1 +% Date: 2007/01/05 +\documentclass{article} +\usepackage{signalflowdiagram} + +\begin{document} + +% +% Basic definitions of the symbols used in a signal flow diagram +% + +% - input terminal +\begin{signalflow}{Input terminal} + \node[input] (in) {$x(t)$}; + \node[coordinate] (c) [right from=in] {}; + % signal path + \path[r>] (in) -- (c); +\end{signalflow} + +% - output terminal +\begin{signalflow}{Output terminal} + \node[output] (out) {$y(t)$}; + \node[coordinate] (c) [left from=out] {}; + % signal path + \path[r>] (c) -- (out); +\end{signalflow} + +% - branching node +\begin{signalflow}{Branching node} + \node[input] (in) {$x(t)$}; + \node[node] (nd) [right from=in] {}; + \node[output] (out1) [above right from=nd] {$x(t)$}; + \node[output] (out2) [below right from=nd] {$x(t)$}; + % signal paths + \path[r>] (in) -- (nd); + \path[r>] (nd) |- (out1); + \path[r>] (nd) |- (out2); +\end{signalflow} + +% - multiplier +\begin{signalflow}{Multiplier} + \node[input] (in) {$x(t)$}; + \node[multiplier] (mul) [right from=in] {\nodepart{above}{$\alpha$}}; + \node[output] (out) [right from=mul] {$\alpha x(t)$}; + % signal paths + \path[r>] (in) -- (mul); + \path[r>] (mul) -- (out); +\end{signalflow} + +% - adder +\begin{signalflow}{Adder} + \node[adder] (add) {}; + \node[input] (in1) [above left from=add] {$x_1(t)$}; + \node[input] (in2) [below left from=add] {$x_2(t)$}; + \node[output] (out) [right from=add] {$x_1(t)+x_2(t)$}; + % signal paths + \path[r>] (in1) -| (add); + \path[r>] (in2) -| (add); + \path[r>] (add) -- (out); +\end{signalflow} + +% - modulator +\begin{signalflow}{Modulator} + \node[modulator] (mul) {}; + \node[input] (in1) [above left from=mul] {$x_1(t)$}; + \node[input] (in2) [below left from=mul] {$x_2(t)$}; + \node[output] (out) [right from=mul] {$x_1(t)x_2(t)$}; + % signal paths + \path[r>] (in1) -| (mul); + \path[r>] (in2) -| (mul); + \path[r>] (mul) -- (out); +\end{signalflow} + +% - delay element +\begin{signalflow}{Delay element} + \node[input] (in) {$x(t)$}; + \node[delay] (del) [right from=in] {$T$}; + \node[output] (out) [right from=del] {$x(t-T)$}; + % signal paths + \path[r>] (in) -- (del); + \path[r>] (del) -- (out); +\end{signalflow} + +% - filter +\begin{signalflow}{Filter} + \node[input] (in) {$x(t)$}; + \node[filter] (fil) [right from=in] {$q(t)$}; + \node[output] (out) [right from=fil] {$x(t)\ast q(t)$}; + % signal paths + \path[r>] (in) -- (fil); + \path[r>] (fil) -- (out); +\end{signalflow} + +% - building block +\begin{signalflow}{Building block of a minimum shift keying modulator} + \node[input] (in) {$x(t)$}; + \node[block] (msk) [right from=in] {Minimum shift keying modulator}; + \node[output](out) [right from=msk] {$z(t)$}; + % signal paths + \path[r>] (in) -- (msk); + \path[r>] (msk) -- (out); +\end{signalflow} + +% - MSK symbol encoder +\begin{signalflow}{Minimum shift keying symbol encoder} + \node[input] (in) {$x(t)$}; + \node[modulator] (mod) [right from=in] {}; + \node[multiplier] (mul) [below from=mod] {$\mathrm{j}$}; + \node[delay] (del) [right from=mod] {$T$}; + \node[node] (nd) [right from=del] {}; + \node[output] (out) [right from=nd] {$y(t)$}; + % signal paths + \path[c>] (in) -- (mod); + \path[c>] (mod) -- (del); + \path[c>] (del) -- (nd); + \path[c>] (nd) |- (mul); + \path[c>] (mul) -- (mod); + \path[c>] (nd) -- (out); +\end{signalflow} + + +\end{document} diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/fir.pdf b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/fir.pdf Binary files differnew file mode 100644 index 00000000000..f9719f7e450 --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/fir.pdf diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/fir.tex b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/fir.tex new file mode 100644 index 00000000000..4a8af171c61 --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/fir.tex @@ -0,0 +1,61 @@ +% Example for an interconnection of signal flow diagrams. +% +% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany +% Version: 0.1 +% Date: 2007/01/05 +\documentclass{article} +\usepackage{signalflowdiagram} + +\begin{document} + +% An FIR filter +\begin{signalflow}[node distance=9mm]{Finite impulse response filter of order $n$}% + % building blocks + \tikzgrid{ + \node[input] (in) {$x(t)$} & + \node[node] (n0) {} & + \node[delay] (d1) {$T$} & + \node[node] (n1) {} & + \node[delay] (d2) {$T$} & + \node[node] (n2) {} & + \node[coordinate] (c1) {} & + \node[coordinate] (c3) {} & + \node[delay] (dn) {$T$} & + \\ & + \node[multiplier] (m0) {$\alpha_0$} & & + \node[multiplier] (m1) {$\alpha_1$} & & + \node[multiplier] (m2) {$\alpha_2$} & & & & + \node[multiplier] (mn) {$\alpha_n$} + \\ & & & + \node[adder] (a1) {} & & + \node[adder] (a2) {} & + \node[coordinate] (c2) {} & + \node[coordinate] (c4) {} & & + \node[adder] (an) {} & + \node[output] (out) {$y(t)$} + } + % signal paths + \path[r>] (in) -- (n0); + \path[r>] (n0) -- (d1); + \path[r>] (d1) -- (n1); + \path[r>] (n1) -- (d2); + \path[r>] (d2) -- (n2); + \path[r>] (n2) -- (c1); % continuation + \path[r.] (c1) -- (c3); % continuation + \path[r>] (c3) -- (dn); % continuation + \path[r>] (n0) -- (m0); + \path[r>] (n1) -- (m1); + \path[r>] (n2) -- (m2); + \path[r>] (dn) -| (mn); + \path[r>] (m0) |- (a1); + \path[r>] (m1) -- (a1); + \path[r>] (m2) -- (a2); + \path[r>] (mn) -- (an); + \path[r>] (a1) -- (a2); + \path[r>] (a2) -- (c2); % continuation + \path[r.] (c2) -- (c4); % continuation + \path[r>] (c4) -- (an); % continuation + \path[r>] (an) -- (out); +\end{signalflow} + +\end{document} diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/interconnection.pdf b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/interconnection.pdf Binary files differnew file mode 100644 index 00000000000..1092c9ba2d6 --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/interconnection.pdf diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/interconnection.tex b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/interconnection.tex new file mode 100644 index 00000000000..1bc3072d70d --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/interconnection.tex @@ -0,0 +1,25 @@ +% Example for an interconnection of signal flow diagrams. +% +% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany +% Version: 0.1 +% Date: 2007/01/05 +\documentclass{article} +\usepackage{signalflowdiagram} +\usepackage{macros} + +\begin{document} + +% interconnection of an MSK symbol encoder with a pulse shaper +\begin{signalflow}{Minimum shift keying modulator}% + \node[input] (in) {$x(t)$}; + \mskCoder {mC} {right from=in} {}; + \pulseShaper {pS} {right from=mC-out} {}; + \node[output] (out) [right from=pS-out] {$z(t)$}; + % signal paths + \path[c>] (in) -- (mC-in); + \path[c>] (mC-out) -- (pS-in); + \path[c>] (pS-out) -- (out); + \textaboveof{mC-out}{$y(t)$} +\end{signalflow} + +\end{document} diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/macros.sty b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/macros.sty new file mode 100644 index 00000000000..024b248cc76 --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/macros.sty @@ -0,0 +1,46 @@ +% Some macros for signal flow diagrams. +% +% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany +% Version: 0.1 +% Date: 2007/01/05 + +\NeedsTeXFormat{LaTeX2e} +\RequirePackage{tikz} +\RequirePackage{signalflowdiagram} +\ProvidesPackage{macros} + [2007/01/05 v0.1 Some user-defined macros for signal flow diagrams] + +% +% Creates the signal flow diagram of a minimum shift keying coder. +% +% #1 = global label +% #2 = parameter for placement +\newcommand{\mskCoder}[3]{% + % building blocks + \node[modulator] (#1-in) [#2] {}; + \node[multiplier] (mul) [below from=#1-in] {$\mathrm{j}$}; + \node[delay] (del) [right from=#1-in] {$T$}; + \node[node] (#1-out) [right from=del] {}; + % signal paths + \path[c>] (#1-in) -- (del); + \path[c>] (del) -- (#1-out); + \path[c>] (#1-out) |- (mul); + \path[c>] (mul) -- (#1-in); +}% + + +% Creates the signal flow diagram of a pulse shaper. +% +% #1 = global label +% #2 = parameter for placement +\newcommand{\pulseShaper}[4]{% + % building blocks + \node[modulator] (#1-in) [#2] {}; + \node[coordinate] (pam) + [above from = #1-in, + label=above:$\sum\limits_{\nu=-\infty}^{\infty} \delta(t-t_\nu)$] {}; + \node[filter] (#1-out) [right from = #1-in] {$q(t)$}; + % signal paths + \path[r>] (pam) -- (#1-in); + \path[c>] (#1-in) -- (#1-out); +}% diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowarrows.code.tex b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowarrows.code.tex new file mode 100644 index 00000000000..da8a6ea3848 --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowarrows.code.tex @@ -0,0 +1,31 @@ +% pgf/tikz library +% for signal flow diagrams +% +% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany +% Version: 0.1 +% Date: 2007/01/05 + + +% Styles for real and complex signal tips. +\newcommand{\pgfarrowsextend}[1]{% + \pgfsetcolor{\pathdrawcolor}% + \@tempdima=#1\pgflinewidth% + \pgfarrowsleftextend{-2\@tempdima} + \pgfarrowsrightextend{2\@tempdima} +} +\newcommand{\pgfarrowsarrowtip}[1]{% + \pgfsetcolor{\pathdrawcolor}% + \@tempdima=#1\pgflinewidth% + \pgfpathmoveto{\pgfpoint{2\@tempdima}{0pt}} + \pgfpathlineto{\pgfpoint{-\@tempdima}{\@tempdima}} + \pgfpathlineto{\pgfpointorigin} + \pgfpathlineto{\pgfpoint{-\@tempdima}{-\@tempdima}} + \pgfusepathqfill +} +\pgfarrowsdeclare{real tip}{real tip}{\pgfarrowsextend{3}}{\pgfarrowsarrowtip{3}} +\pgfarrowsdeclarereversed{real tip reversed}{real tip reversed}{real tip}{real tip} +\pgfarrowsdeclare{complex tip}{complex tip}{\pgfarrowsextend{1}}{\pgfarrowsarrowtip{1}} +\pgfarrowsdeclarereversed{complex tip reversed}{complex tip reversed}{complex tip}{complex tip} + + +\endinput diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowblocks.code.tex b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowblocks.code.tex new file mode 100644 index 00000000000..0a7410cc443 --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowblocks.code.tex @@ -0,0 +1,469 @@ +% pgf/tikz library +% for signal flow diagrams +% +% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany +% Version: 0.1 +% Date: 2007/01/05 + +% Known bugs: - Anchors of source shape are not precisely positioned. +% - Anchor border of source shape is a rectangle. +% - The bounding box of standard text label is ignored. + + +% +% Styles for nodes, terminals, and operators. +% +% - building blocks +\tikzstyle{block color}% + = [draw=\blockdrawcolor, + fill=\blockfillcolor] +\tikzstyle{block style}% + = [block color, + line width=\blocklinewidth, + text centered] +\tikzstyle{block}% + = [rectangle, + block style, + minimum width=\blockwidth, + minimum height=\blockheight, + text width=\blocktextwidth] +\tikzstyle{filter}% + = [rectangle, + block style, + minimum width=\filterwidth, + minimum height=\filterheight, + text width=\filtertextwidth] +\tikzstyle{source}% + = [source shape, + operator style] +\tikzstyle{serial parallel converter}% + = [serial parallel converter shape, + block style, + minimum width=10mm, + minimum height=20mm, + inner sep=2mm] +\tikzstyle{parallel serial converter}% + = [parallel serial converter shape, + block style, + minimum width=10mm, + minimum height=20mm, + inner sep=2mm] +\tikzstyle{symbol mapper}% + = [symbol mapper shape, + block style, + text centered, + minimum size=20mm, + text width=18mm] +\tikzstyle{inverse symbol mapper}% + = [inverse symbol mapper shape, + block style, + text centered, + minimum size=20mm, + text width=18mm] + + +% +% Shape of a source. +% +\newbox\pgfnodeparttextbox +\pgfdeclareshape{source shape} +{ + \savedanchor\westpoint{ + \pgf@x=\wd\pgfnodeparttextbox% + \advance\pgf@x by\pgfshapeouterxsep% + \pgf@y=.5\ht\pgfnodeparttextbox% + \advance\pgf@y by-.5\dp\pgfnodeparttextbox% + } + \saveddimen\radius{ + \setlength\pgf@x{\pgfshapeminwidth} + } + \anchor{west}{\westpoint} + \anchor{north west}{ + \pgf@process{\westpoint} + \advance\pgf@y by\radius + } + \anchor{north}{% + \pgf@process{\westpoint} + \pgf@xa=\radius\advance\pgf@x by+0.5\pgf@xa + \pgf@ya=\radius\advance\pgf@y by+0.866025\pgf@ya + } + \anchor{north east}{% + \pgf@process{\westpoint} + \pgf@xa=\radius\advance\pgf@x by+0.866025\pgf@xa + \pgf@ya=\radius\advance\pgf@y by+0.5\pgf@ya + } + \anchor{east}{ + \pgf@process{\westpoint} + \advance\pgf@x by\radius + \advance\pgf@x by0.5\pgflinewidth + } + \anchor{south east}{% + \pgf@process{\westpoint} + \pgf@xa=\radius\advance\pgf@x by+0.866025\pgf@xa + \pgf@ya=\radius\advance\pgf@y by-0.5\pgf@ya + } + \anchor{south}{% + \pgf@process{\westpoint} + \pgf@xa=\radius\advance\pgf@x by+0.5\pgf@xa + \pgf@ya=\radius\advance\pgf@y by-0.866025\pgf@ya + } + \anchor{south west}{ + \pgf@process{\westpoint} + \advance\pgf@y by-\radius + } + \anchor{center}{ + \pgf@process{\westpoint} + \pgf@xa=\radius\advance\pgf@x by+0.5\pgf@xa + } + % node part + \nodeparts{text} + \anchor{text}{ + \pgf@process{\westpoint} + \pgf@xa=\radius + \advance\pgf@y by-.5\ht\pgfnodeparttextbox% + \advance\pgf@x by-\wd\pgfnodeparttextbox% + \advance\pgf@x by-0.5mm + } + \anchorborder{% + \pgf@xb=\pgf@x% xb/yb is target + \pgf@yb=\pgf@y% + % southwest + \westpoint\advance\pgf@y by-\radius + \pgf@xa=\pgf@x% xa/ya is se + \pgf@ya=\pgf@y% + % northeast + \westpoint\advance\pgf@x by\radius\advance\pgf@y by\radius% + \advance\pgf@x by-\pgf@xa% + \advance\pgf@y by-\pgf@ya% + \pgf@xc=.5\pgf@x% x/y is half width/height + \pgf@yc=.5\pgf@y% + \advance\pgf@xa by\pgf@xc% xa/ya becomes center + \advance\pgf@ya by\pgf@yc% + \edef\pgf@marshal{% + \noexpand\pgfpointborderrectangle + {\noexpand\pgfpoint{\the\pgf@xb}{\the\pgf@yb}} + {\noexpand\pgfpoint{\the\pgf@xc}{\the\pgf@yc}}% + }% + \pgf@process{\pgf@marshal}% + \advance\pgf@x by\pgf@xa% + \advance\pgf@y by\pgf@ya% + } + % Background path + \backgroundpath{ + {\pgftransformreset{\pgfnodeparttextbox}} + \westpoint \pgf@xa=\pgf@x \pgf@ya=\pgf@y + \advance\pgf@y by\radius + \pgfmoveto{\pgfpoint{\pgf@x}{\pgf@y}} + \pgfpatharc{90}{-90}{\radius} + \pgfclosepath + } +} + + +% +% Shape of a serial to parallel converter. +% +\newbox\pgfnodepartSbox +\newbox\pgfnodepartPbox +\pgfdeclareshape{serial parallel converter shape} +{ + % inherit from rectangle + \inheritsavedanchors[from=rectangle] + \inheritanchor[from=rectangle]{center} + \inheritanchor[from=rectangle]{north} + \inheritanchor[from=rectangle]{north east} + \inheritanchor[from=rectangle]{east} + \inheritanchor[from=rectangle]{south east} + \inheritanchor[from=rectangle]{south} + \inheritanchor[from=rectangle]{south west} + \inheritanchor[from=rectangle]{west} + \inheritanchor[from=rectangle]{north west} + \inheritanchorborder[from=rectangle] + \inheritanchorborder[from=rectangle] + \inheritbackgroundpath[from=rectangle] + % terminal anchors + \anchor{in}{% + \northeast + \pgf@ya=0.5\pgf@y + \southwest + \pgf@y=0.5\pgf@y + \advance\pgf@y by+\pgf@ya% + } + \anchor{out1}{ + \southwest + \pgf@ya=0.9\pgf@y + \northeast + \pgf@y=0.1\pgf@y + \advance\pgf@y by\pgf@ya% + } + \anchor{out2}{ + \southwest + \pgf@ya=0.7\pgf@y + \northeast + \pgf@y=0.3\pgf@y + \advance\pgf@y by\pgf@ya% + } + \anchor{outl}{ + \southwest + \pgf@ya=0.1\pgf@y + \northeast + \pgf@y=0.9\pgf@y + \advance\pgf@y by\pgf@ya% + } + \anchor{dots}{ + \southwest + \pgf@ya=0.4\pgf@y + \northeast + \pgf@y=0.6\pgf@y + \advance\pgf@y by\pgf@ya% + \setlength{\pgf@xa}{\xspace} + \advance\pgf@x by.5\pgf@xa% + } + % node parts + \nodeparts{S,P} + \anchor{S}{ + \southwest + \pgf@xa=\pgf@x + \northeast + \pgf@x=\pgf@xa + \advance\pgf@y by-\ht\pgfnodepartSbox% + \advance\pgf@y by-.5\dp\pgfnodepartSbox% + \advance\pgf@x by+\pgfshapeinnerxsep% + \advance\pgf@y by-\pgfshapeinnerysep% + } + \anchor{P}{ + \northeast + \pgf@xa=\pgf@x + \southwest + \pgf@x=\pgf@xa + \advance\pgf@x by-\wd\pgfnodepartPbox% + \advance\pgf@x by-\pgfshapeinnerxsep% + \advance\pgf@y by+\pgfshapeinnerysep% + } + % diagonal line S/P + \foregroundpath{% + \pgfpathmoveto{\pgfpointadd{\southwest}{\pgfpoint{\pgfshapeouterxsep}{\pgfshapeouterysep}}} + \pgfpathlineto{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfshapeouterxsep}{\pgfshapeouterysep}}}} + } +} + +% +% Shape of a parallel to serial converter. +% +\newbox\pgfnodepartSbox +\newbox\pgfnodepartPbox +\pgfdeclareshape{parallel serial converter shape} +{ + % inherit from rectangle + \inheritsavedanchors[from=rectangle] + \inheritanchor[from=rectangle]{center} + \inheritanchor[from=rectangle]{north} + \inheritanchor[from=rectangle]{north east} + \inheritanchor[from=rectangle]{east} + \inheritanchor[from=rectangle]{south east} + \inheritanchor[from=rectangle]{south} + \inheritanchor[from=rectangle]{south west} + \inheritanchor[from=rectangle]{west} + \inheritanchor[from=rectangle]{north west} + \inheritanchorborder[from=rectangle] + \inheritanchorborder[from=rectangle] + \inheritbackgroundpath[from=rectangle] + % terminal anchors + \anchor{out}{% + \southwest + \pgf@ya=0.5\pgf@y + \northeast + \pgf@y=0.5\pgf@y + \advance\pgf@y by+\pgf@ya% + } + \anchor{in1}{ + \northeast + \pgf@ya=0.1\pgf@y + \southwest + \pgf@y=0.9\pgf@y + \advance\pgf@y by\pgf@ya% + } + \anchor{in2}{ + \northeast + \pgf@ya=0.3\pgf@y + \southwest + \pgf@y=0.7\pgf@y + \advance\pgf@y by\pgf@ya% + } + \anchor{inl}{ + \northeast + \pgf@ya=0.9\pgf@y + \southwest + \pgf@y=0.1\pgf@y + \advance\pgf@y by\pgf@ya% + } + \anchor{dots}{ + \northeast + \pgf@ya=0.6\pgf@y + \southwest + \pgf@y=0.4\pgf@y + \advance\pgf@y by\pgf@ya% + \setlength{\pgf@xa}{\xspace} + \advance\pgf@x by-.5\pgf@xa% + } + % node parts + \nodeparts{P,S} + \anchor{P}{ + \southwest + \pgf@xa=\pgf@x + \northeast + \pgf@x=\pgf@xa + \advance\pgf@y by-\ht\pgfnodepartPbox% + \advance\pgf@y by-.5\dp\pgfnodepartPbox% + \advance\pgf@x by+\pgfshapeinnerxsep% + \advance\pgf@y by-\pgfshapeinnerysep% + } + \anchor{S}{ + \northeast + \pgf@xa=\pgf@x + \southwest + \pgf@x=\pgf@xa + \advance\pgf@x by-\wd\pgfnodepartSbox% + \advance\pgf@x by-\pgfshapeinnerxsep% + \advance\pgf@y by+\pgfshapeinnerysep% + } + % diagonal line S/P + \foregroundpath{% + \pgfpathmoveto{\pgfpointadd{\southwest}{\pgfpoint{\pgfshapeouterxsep}{\pgfshapeouterysep}}} + \pgfpathlineto{\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfshapeouterxsep}{\pgfshapeouterysep}}}} + } +} + + +% +% Shape of a symbol mapper. +% +\pgfdeclareshape{symbol mapper shape} +{ + % rectangle anchors + \inheritsavedanchors[from=rectangle] + \inheritanchor[from=rectangle]{center} + \inheritanchor[from=rectangle]{north} + \inheritanchor[from=rectangle]{north east} + \inheritanchor[from=rectangle]{east} + \inheritanchor[from=rectangle]{south east} + \inheritanchor[from=rectangle]{south} + \inheritanchor[from=rectangle]{south west} + \inheritanchor[from=rectangle]{west} + \inheritanchor[from=rectangle]{north west} + \inheritanchorborder[from=rectangle] + % terminal anchors + \anchor{out}{% + \southwest + \pgf@ya=0.5\pgf@y + \northeast + \pgf@y=0.5\pgf@y + \advance\pgf@y by+\pgf@ya% + } + \anchor{in1}{ + \northeast + \pgf@ya=0.1\pgf@y + \southwest + \pgf@y=0.9\pgf@y + \advance\pgf@y by\pgf@ya% + } + \anchor{in2}{ + \northeast + \pgf@ya=0.3\pgf@y + \southwest + \pgf@y=0.7\pgf@y + \advance\pgf@y by\pgf@ya% + } + \anchor{dots}{ + \northeast + \pgf@ya=0.6\pgf@y + \southwest + \pgf@y=0.4\pgf@y + \advance\pgf@y by\pgf@ya% + \setlength{\pgf@xa}{\xspace} + \advance\pgf@x by-.5\pgf@xa% + } + \anchor{inl}{ + \northeast + \pgf@ya=0.9\pgf@y + \southwest + \pgf@y=0.1\pgf@y + \advance\pgf@y by\pgf@ya% + } + % rectangle shaped frame + \backgroundpath{ + \pgfpathrectanglecorners + {\pgfpointadd{\southwest}{\pgfpoint{\pgfshapeouterxsep}{\pgfshapeouterysep}}} + {\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfshapeouterxsep}{\pgfshapeouterysep}}}} + } + + \inheritbackgroundpath[from=rectangle] +} + + +% +% Shape of an inverse symbol mapper. +% +\pgfdeclareshape{inverse symbol mapper shape} +{ + % rectangle anchors + \inheritsavedanchors[from=rectangle] + \inheritanchor[from=rectangle]{center} + \inheritanchor[from=rectangle]{north} + \inheritanchor[from=rectangle]{north east} + \inheritanchor[from=rectangle]{east} + \inheritanchor[from=rectangle]{south east} + \inheritanchor[from=rectangle]{south} + \inheritanchor[from=rectangle]{south west} + \inheritanchor[from=rectangle]{west} + \inheritanchor[from=rectangle]{north west} + \inheritanchorborder[from=rectangle] + % terminal anchors + \anchor{in}{% + \northeast + \pgf@ya=0.5\pgf@y + \southwest + \pgf@y=0.5\pgf@y + \advance\pgf@y by+\pgf@ya% + } + \anchor{out1}{ + \southwest + \pgf@ya=0.9\pgf@y + \northeast + \pgf@y=0.1\pgf@y + \advance\pgf@y by\pgf@ya% + } + \anchor{out2}{ + \southwest + \pgf@ya=0.7\pgf@y + \northeast + \pgf@y=0.3\pgf@y + \advance\pgf@y by\pgf@ya% + } + \anchor{outl}{ + \southwest + \pgf@ya=0.1\pgf@y + \northeast + \pgf@y=0.9\pgf@y + \advance\pgf@y by\pgf@ya% + } + \anchor{dots}{ + \southwest + \pgf@ya=0.4\pgf@y + \northeast + \pgf@y=0.6\pgf@y + \advance\pgf@y by\pgf@ya% + \setlength{\pgf@xa}{\xspace} + \advance\pgf@x by.5\pgf@xa% + } + % rectangle shaped frame + \backgroundpath{ + \pgfpathrectanglecorners + {\pgfpointadd{\southwest}{\pgfpoint{\pgfshapeouterxsep}{\pgfshapeouterysep}}} + {\pgfpointadd{\northeast}{\pgfpointscale{-1}{\pgfpoint{\pgfshapeouterxsep}{\pgfshapeouterysep}}}} + } + + \inheritbackgroundpath[from=rectangle] +} + +\endinput diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowdiagram.code.tex b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowdiagram.code.tex new file mode 100644 index 00000000000..37e3608ac8d --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowdiagram.code.tex @@ -0,0 +1,60 @@ +% pgf/tikz library +% for signal flow diagrams +% +% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany +% Version: 0.1 +% Date: 2007/01/05 + +% +% Extended general shape options, cf. tikz.code.tex +% +% #1 = source node +% Remark: The node distance is used +% for the distance between the borders of two nodes +\tikzoption{below from}{\tikz@from{#1}{1}{-90}{south}{north}}% +\tikzoption{right from}{\tikz@from{#1}{1}{0}{east}{west}}% +\tikzoption{above from}{\tikz@from{#1}{1}{90}{north}{south}}% +\tikzoption{left from}{\tikz@from{#1}{1}{180}{west}{east}}% +\tikzoption{below left from}{\tikz@from{#1}{1.414214}{-135}{south west}{north east}}% +\tikzoption{below right from}{\tikz@from{#1}{1.414214}{-45}{south east}{north west}}% +\tikzoption{above right from}{\tikz@from{#1}{1.414214}{45}{north east}{south west}}% +\tikzoption{above left from}{\tikz@from{#1}{1.414214}{135}{north west}{south east}}% +\def\tikz@from#1#2#3#4#5{% + \def\tikz@anchor{#5}% + \let\tikz@do@auto@anchor=\relax% + \tikz@addtransform{\pgftransformshift{\pgfpointscale{#2}{\pgfpointpolar{#3}{\tikz@node@distance}}}}% + \def\tikz@node@at{\pgfpointanchor{#1}{#4}}} + + +% +% Styles for real and complex signal paths. +% +\tikzstyle{dotted path} + = [loosely dotted, + shorten >= 2mm, + shorten <= 2mm] +\tikzstyle{r} + = [line width=\pathlinewidth, + >= real tip, + draw] +\tikzstyle{r>} + = [r,->] +\tikzstyle{<r} + = [r,<-] +\tikzstyle{r.} + = [r,dotted path] +\tikzstyle{c} + = [line width=\pathlinewidth, + double=\pathfillcolor, + double distance=\pathlinewidth, + >= complex tip, + draw,shorten <=-\pathlineextend] +\tikzstyle{c>} + = [c,->] +\tikzstyle{<c} + = [c,<-] +\tikzstyle{c.} + = [c,dotted path] + + +\endinput diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowoperators.code.tex b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowoperators.code.tex new file mode 100644 index 00000000000..f94f0a8f8a7 --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/pgflibrarytikzsignalflowoperators.code.tex @@ -0,0 +1,259 @@ +% pgf/tikz library +% for signal flow diagrams +% +% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany +% Version: 0.1 +% Date: 2007/01/05 + + +% +% Styles for nodes, terminals, and operators. +% +% - nodes and terminals +\tikzstyle{node style}% + = [draw=\pathdrawcolor, + fill=\pathdrawcolor, + minimum size=\nodesize] +\tikzstyle{terminal style}% + = [draw=\pathdrawcolor, + fill=\pathfillcolor, + line width=\pathlinewidth, + minimum size=\terminalsize] +\tikzstyle{node}% + = [node shape, + node style] +\tikzstyle{input}% + = [input terminal shape, + terminal style] +\tikzstyle{output}% + = [output terminal shape, + terminal style] +% - operators +\tikzstyle{operator color}% + = [draw=\operatordrawcolor, + fill=\operatorfillcolor] +\tikzstyle{operator style}% + = [operator color, + line width=\operatorlinewidth, + minimum size=\operatorsize] +\tikzstyle{multiplier}% + = [multiplier shape, + operator style] +\tikzstyle{modulator}% + = [modulator shape, + operator style] +\tikzstyle{adder}% + = [adder shape, + operator style] +\tikzstyle{delay}% + = [rectangle, + operator style, + minimum size=\delaysize] + + +% +% Circular shapes of operator symbols. +% +% #1 = additional inner symbol +\newcommand{\circularshape}[1]{% + \savedanchor\centerpoint{\pgfpointorigin} + % radius is half of maximum of \pgfshapeminwidth and \pgfshapeminheight + \saveddimen\radius{% + \setlength{\pgf@xa}{\pgfshapeminwidth} + \setlength{\pgf@ya}{\pgfshapeminheight} + \ifdim\pgf@xa>\pgf@ya + \pgf@x=.5\pgf@xa + \else + \pgf@x=.5\pgf@ya + \fi + } + \inheritanchor[from=circle]{center} + \inheritanchorborder[from=circle] + \inheritanchor[from=circle]{north} + \inheritanchor[from=circle]{north east} + \inheritanchor[from=circle]{east} + \inheritanchor[from=circle]{south east} + \inheritanchor[from=circle]{south} + \inheritanchor[from=circle]{south west} + \inheritanchor[from=circle]{west} + \inheritanchor[from=circle]{north west} + \inheritanchor[from=circle]{mid} + \inheritanchor[from=circle]{mid west} + \inheritanchor[from=circle]{mid east} + \inheritanchor[from=circle]{base} + \inheritanchor[from=circle]{base west} + \inheritanchor[from=circle]{base east} + % circular shaped frame + \inheritbackgroundpath[from=circle] + % additional inner symbol + \foregroundpath{ + \centerpoint% + \pgf@xc=\pgf@x% + \pgf@yc=\pgf@y% + \@tempdima=\radius% + #1 + } + % no text + \nodeparts{} +} + + +% +% Anchors for default text box, see below. +% +\newcommand{\stdaboveanchor}{% + \anchor{text}{% + \centerpoint + \advance\pgf@x by-0.5\wd\pgfnodeparttextbox% + \advance\pgf@y by\radius + \advance\pgf@y by+0.5mm + } +} +\newcommand{\stdrightanchor}{% + \anchor{text}{% + \centerpoint + \advance\pgf@x by\radius + \advance\pgf@x by+0.5mm + \advance\pgf@y by-0.5\ht\pgfnodeparttextbox% + \advance\pgf@y by+0.5\dp\pgfnodeparttextbox% + } +} +\newcommand{\stdbelowanchor}{% + \anchor{text}{% + \centerpoint + \advance\pgf@x by-0.5\wd\pgfnodeparttextbox% + \advance\pgf@y by-\ht\pgfnodeparttextbox% + \advance\pgf@y by-\radius + \advance\pgf@y by-0.5mm + } +} +\newcommand{\stdleftanchor}{% + \anchor{text}{% + \centerpoint + \advance\pgf@x by-\radius + \advance\pgf@x by-\wd\pgfnodeparttextbox% + \advance\pgf@x by-0.5mm + \advance\pgf@y by-0.5\ht\pgfnodeparttextbox% + \advance\pgf@y by+0.5\dp\pgfnodeparttextbox% + } +} + + +% +% Circular shapes of operator symbols with default text box. +% +% #1 = place of the default text box +\newbox\pgfnodepartabovebox +\newbox\pgfnodepartrightbox +\newbox\pgfnodepartbelowbox +\newbox\pgfnodepartleftbox +\newcommand{\labelledcircularshape}[1]{% + % node parts + \nodeparts{text,above,right,below,left} + % anchors + \savedanchor\centerpoint{\pgfpointorigin} + % radius is half of maximum of \pgfshapeminwidth and \pgfshapeminheight + \saveddimen\radius{% + \setlength{\pgf@xa}{\pgfshapeminwidth} + \setlength{\pgf@ya}{\pgfshapeminheight} + \ifdim\pgf@xa>\pgf@ya + \pgf@x=.5\pgf@xa + \else + \pgf@x=.5\pgf@ya + \fi + } + \inheritanchor[from=circle]{center} + \inheritanchorborder[from=circle] + \inheritanchor[from=circle]{north} + \inheritanchor[from=circle]{north east} + \inheritanchor[from=circle]{east} + \inheritanchor[from=circle]{south east} + \inheritanchor[from=circle]{south} + \inheritanchor[from=circle]{south west} + \inheritanchor[from=circle]{west} + \inheritanchor[from=circle]{north west} + \inheritanchor[from=circle]{mid} + \inheritanchor[from=circle]{mid west} + \inheritanchor[from=circle]{mid east} + \inheritanchor[from=circle]{base} + \inheritanchor[from=circle]{base west} + \inheritanchor[from=circle]{base east} + #1 + \anchor{above}{% + \centerpoint + \advance\pgf@x by-0.5\wd\pgfnodepartabovebox% + \advance\pgf@y by\radius + \advance\pgf@y by+0.5mm + } + \anchor{right}{% + \centerpoint + \advance\pgf@x by\radius + \advance\pgf@x by+0.5mm + \advance\pgf@y by-0.5\ht\pgfnodepartrightbox% + \advance\pgf@y by+0.5\dp\pgfnodeparttextbox% + } + \anchor{below}{% + \centerpoint + \advance\pgf@x by-0.5\wd\pgfnodepartbelowbox% + \advance\pgf@y by-\ht\pgfnodepartbelowbox% + \advance\pgf@y by-\radius + \advance\pgf@y by-0.5mm + } + \anchor{left}{% + \centerpoint + \advance\pgf@x by-\radius + \advance\pgf@x by-\wd\pgfnodepartleftbox% + \advance\pgf@x by-0.5mm + \advance\pgf@y by-0.5\ht\pgfnodepartleftbox% + \advance\pgf@y by+0.5\dp\pgfnodeparttextbox% + } + % circular shaped frame + \inheritbackgroundpath[from=circle] +} + + +% +% Shape of a node. +% +\pgfdeclareshape{node shape}{\labelledcircularshape{\stdaboveanchor}}% + +% +% Shape of an input terminal. +% +\pgfdeclareshape{input terminal shape}{\labelledcircularshape{\stdleftanchor}}% +% +% Shape of an output terminal. +% +\pgfdeclareshape{output terminal shape}{\labelledcircularshape{\stdrightanchor}}% +% +% Shape of a multiplier. +% +\pgfdeclareshape{multiplier shape}{\labelledcircularshape{\stdleftanchor}}% +% +% Shape of a modulator. +% +\pgfdeclareshape{modulator shape}{\circularshape{% + \pgfpathmoveto{\pgfpointadd{\pgfpoint{\pgf@xc}{\pgf@yc}} + {\pgfpoint{-0.707107\@tempdima}{-0.707107\@tempdima}}} + \pgfpathlineto{\pgfpointadd{\pgfpoint{\pgf@xc}{\pgf@yc}} + {\pgfpoint{0.707107\@tempdima}{0.707107\@tempdima}}} + \pgfpathmoveto{\pgfpointadd{\pgfpoint{\pgf@xc}{\pgf@yc}} + {\pgfpoint{0.707107\@tempdima}{-0.707107\@tempdima}}} + \pgfpathlineto{\pgfpointadd{\pgfpoint{\pgf@xc}{\pgf@yc}} + {\pgfpoint{-0.707107\@tempdima}{0.707107\@tempdima}}} +}}% +% +% Shape of an adder. +% +\pgfdeclareshape{adder shape}{\circularshape{% + \pgfpathmoveto{\pgfpointadd{\pgfpoint{\pgf@xc}{\pgf@yc}} + {\pgfpoint{-0.5\@tempdima}{0\@tempdima}}} + \pgfpathlineto{\pgfpointadd{\pgfpoint{\pgf@xc}{\pgf@yc}} + {\pgfpoint{0.5\@tempdima}{0\@tempdima}}} + \pgfpathmoveto{\pgfpointadd{\pgfpoint{\pgf@xc}{\pgf@yc}} + {\pgfpoint{0\@tempdima}{-0.5\@tempdima}}} + \pgfpathlineto{\pgfpointadd{\pgfpoint{\pgf@xc}{\pgf@yc}} + {\pgfpoint{0\@tempdima}{0.5\@tempdima}}} +}}% + +\endinput diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/placement.pdf b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/placement.pdf Binary files differnew file mode 100644 index 00000000000..c06b5d79f08 --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/placement.pdf diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/placement.tex b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/placement.tex new file mode 100644 index 00000000000..ec65a53b7d0 --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/placement.tex @@ -0,0 +1,28 @@ +% Placement example of from command, +% which is an extension of the of command, +% cf. tikz.code.tex of Till Tantau. +% +% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany +% Version: 0.1 +% Date: 2007/01/05 +\documentclass{article} +\usepackage{signalflowdiagram} +\usepackage{macros} + +\begin{document} + +% +% Basic placement example using my "from" command. +% +\begin{signalflow}{Placement example} + \node[block] (bc) {center}; + \node[block] (bl) [left from=bc] {left}; + \node[block] (br) [right from=bc] {right}; + \node[block] (ba) [above from=bc] {above}; + \node[block] (bb) [below from=bc] {below}; + \node[block] (bal) [above left from=bc] {above\\left}; + \node[block] (bbl) [below left from=bc] {below\\left}; + \node[block] (bal) [above right from=bc] {above\\right}; + \node[block] (bbl) [below right from=bc] {below\\right}; +\end{signalflow} +\end{document} diff --git a/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/signalflowdiagram.sty b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/signalflowdiagram.sty new file mode 100644 index 00000000000..c258eb7a9d9 --- /dev/null +++ b/Master/texmf-dist/source/latex/pgf/incoming/KarlheinzOchs/signalflowdiagram.sty @@ -0,0 +1,138 @@ +% A simple library for signal flow diagrams +% based on the pgf/tikz package of Till Tantau +% +% Author: Dr. Karlheinz Ochs, Ruhr-University of Bochum, Germany +% Version: 0.1 +% Date: 2007/01/05 +\NeedsTeXFormat{LaTeX2e} +\RequirePackage{tikz} +\ProvidesPackage{signalflowdiagram} + [2006/12/30 v0.1 Signal flow diagrams] + +% +% Libraries for signal flow diagrams. +% +\usetikzlibrary{signalflowdiagram,signalflowarrows,signalflowoperators,signalflowblocks} + + +% +% Colors +% +\newcommand{\pathdrawcolor}{\blockdrawcolor} % draw color of signal paths +\newcommand{\pathfillcolor}{\blockfillcolor} % fill color of signal paths +\newcommand{\operatordrawcolor}{\blockdrawcolor} % draw color of operators +\newcommand{\operatorfillcolor}{\blockfillcolor} % fill color of operators +\newcommand{\blockdrawcolor}{black} % draw color of blocks +\newcommand{\blockfillcolor}{white} % fill color of blocks + +% +% line widths of +% +\newcommand{\diagramlinewidth}{0.5mm} % signal flow diagram frames +\newcommand{\pathlinewidth}{0.3mm} % signal paths +\newcommand{\operatorlinewidth}{0.3mm} % operator frames +\newcommand{\blocklinewidth}{0.5mm} % building block styles + +% +% line widths, sizes, etc. +% +\newcommand{\nodesize}{1.5mm} % size of nodes +\newcommand{\terminalsize}{\nodesize} % size of terminals +\newcommand{\operatorsize}{3mm} % size of circular shaped operator symbols +\newcommand{\delaysize}{6mm} % minimum size of delay elements +\newcommand{\blockwidth}{24mm} % minimum width of blocks +\newcommand{\blockheight}{12mm} % minimum height of blocks +\newcommand{\blocktextwidth}{22mm} % minimum text width of blocks +\newcommand{\filterwidth}{12mm} % minimum width of filters +\newcommand{\filterheight}{8mm} % minimum height of filters +\newcommand{\filtertextwidth}{6mm} % minimum text width of filters + +% +% misc. +% +\newcommand{\pathlineextend}{0.025mm} % shortens the end of the signal paths +\newcommand{\vbullets}[1]{% vertical bullets +\node[rectangle,anchor=center,at=(#1),text width=2ex]{% +$\bullet$\\[-1ex] $\bullet$\\[-1ex] $\bullet$} +}% + + +% +% Signal flow diagram. +% +% #1 = optional parameter(s) +% #2 = title text +\tikzstyle{signal flow diagram} = + [rectangle, + sharp corners, + line width=\diagramlinewidth, + draw=black, + inner sep=3mm] +\newenvironment{signalflow}[2][]{% +\begin{center} + \begin{tikzpicture} + \node[% title + signal flow diagram, + fill=blue!90!black, + text=white] (title) {#2};% title text + \node at (title.south west) [% + signal flow diagram, + fill=blue!20!white, + anchor=north west, + yshift=\pgflinewidth] + \bgroup + \begin{minipage}{0.9\textwidth} + \centering + \begin{tikzpicture}[% + node distance=8mm, + pin distance=8mm, + label distance=-0.5mm, + inner sep=1mm, + anchor=center, + text centered, + #1]% optional parameter(s) +}{% + \end{tikzpicture} + \end{minipage} + \egroup; + \end{tikzpicture} +\end{center} +}% + + +% +% Positioning of node text. +% +% #1 = node label +% #2 = label text +\newcommand{\textaboveof}[2]{\pgftext[bottom,at=\pgfpointanchor{#1}{north},y=+1mm]{#2}}% +\newcommand{\textrightof}[2]{\pgftext[left, at=\pgfpointanchor{#1}{east}, x=+1mm]{#2}}% +\newcommand{\textbelowof}[2]{\pgftext[top ,at=\pgfpointanchor{#1}{south},y=-1mm]{#2}}% +\newcommand{\textleftof} [2]{\pgftext[right, at=\pgfpointanchor{#1}{west}, x=-1mm]{#2}}% + +\makeatletter +\newcounter{r} +\newcommand{\tikzgrid}{% + \pgfsetxvec{\pgfpoint{\tikz@node@distance}{0mm}}% + \pgfsetyvec{\pgfpoint{0mm}{\tikz@node@distance}}% + \tikz@matrix% +} +\newcommand{\tikz@matrix}[1]{\tikz@@matrix#1@}% +\def\tikz@@matrix#1@{\do@rows#1\\@\\}% +\def\do@rows#1\\{% + \ifx#1@% + \else% + \setcounter{r}{0}% + \do@columns#1&@&% + \pgftransformshift{\pgfpointxy{-\ther}{-1}}% + \expandafter\do@rows% + \fi}% +\def\do@columns#1&{% + \if#1@% + \else% + \stepcounter{r}% + \pgftransformshift{\pgfpointxy{1}{0}}% + #1;% + \expandafter\do@columns% + \fi}% +\makeatother |