PDA

View Full Version : tikz - relative Koordinaten



THE_ONE
17-12-2009, 18:22
Hallo!

Ich habe hier folgenden tikz Code mit Ergebnis:
http://www.mrunix.de/forums/attachment.php?attachmentid=3429&stc=1&d=1261068960

Kann mir jemand sagen ob ich das auch relative angeben kann.
Ich durchstöbere zwar gerade das pgf manual (http://www.ctan.org/tex-archive/graphics/pgf/base/doc/generic/pgf/pgfmanual.pdf). Leider finde ich aber bei der Suche nicht das was ich haben will.
Ich weiß zwar wie es geht wenn ich es drunter/drüber oder daneben haben will,


%absolute Pfadangabe
\node at (8,0)[box1]{\large compound module};
\node at (8.5,-0.5)[box1]{\large compound module};
\node at (9,-1)[box1]{\large compound module};
\node at (9.5,-1.5)[box1]{\large compound module};

%relative Pfadangabe
\node at (16,0)[box](d0){\large simple module};
\node [box1] (d1) [right=-2.5cm of d0]{\large compound module};
\node [box] (d2) [right=-2.5cm of d1]{\large compound module};
\node [box1] (d3) [right=-2.5cm of d2]{\large compound module};

nicht aber wie ich x und y offset gleichzeitig angeben kann. Weiß jemand wie das geht?

Hier mal das ergebnis von dem Code:
http://www.mrunix.de/forums/attachment.php?attachmentid=3430&stc=1&d=1261070210

Außerdem frage ich mich noch warum x1 und x2 nicht gleich sind.
eigentlich sollte das doch der Fall sein bei gegebenen Abmessungen und verwendeten Werten, oder?
Boxbreite = 3cm, Abstand bei absoluter Pfadangabe = 0.5cm bei relativer -2.5cm. In beiden fällen sollte doch das Ergebnis gleich sein. Was übersehe ich hier?

Lg THE_ONE

Ps.: Hier noch die Definitionen von den Boxen:


\tikzset{box/.style={shape=rectangle,draw=blue,fill=blue!50!whi te,text=white,rounded corners=3mm, minimum width=3cm,minimum height=2cm,inner sep=0pt,text width = 3cm,text centered}}
\tikzset{box1/.style={shape=rectangle,draw=red,fill=red!50!yello w,text=white,rounded corners=3mm, minimum width=3cm,minimum height=2cm,inner sep=0pt,text width = 3cm,text centered}}

krihaa
17-12-2009, 20:48
So vielleicht?

\documentclass{scrartcl}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[node distance=0.5cm+2\fboxsep]

\tikzset{box/.style={shape=rectangle,draw=blue,fill=blue!50!whi te,text=white,rounded corners=3mm, minimum width=3cm,minimum height=2cm,inner sep=0pt,text width = 3cm,text centered}}
\tikzset{box1/.style={shape=rectangle,draw=red,fill=red!50!yello w,text=white,rounded corners=3mm, minimum width=3cm,minimum height=2cm,inner sep=0pt,text width = 3cm,text centered}}
%absolute Pfadangabe
\node at (8,0)[box1]{\large compound module};
\node at (8.5,-0.5)[box1]{\large compound module};
\node at (9,-1)[box1]{\large compound module};
\node at (9.5,-1.5)[box1]{\large compound module};

%relative Pfadangabe
\node at (16,0)[box](d0){\large simple module};
\node [box1] (d1) [below right of=d0]{\large compound module};
\node [box] (d2) [below right of=d1]{\large compound module};
\node [box1] (d3) [below right of=d2]{\large compound module};
\draw[|-|] (14.5,-1.5)--(15,-1.5) node[below,midway]{0.5cm};

\end{tikzpicture}
\end{document}
Gruß
Kristian

bobmalaria
18-12-2009, 16:11
hi,

oder du verwendest xshift und yshift als optionen. einfach mal im manual nach den begriffen suchen.

gruss

KlausImMai
20-12-2009, 07:20
Ist das nun schon die Antwort?

Mit tikz gibt es grundsätzlich nur 2 Möglichkeiten, die Elemente anzuordnen:
1. mit Koordinaten, so wie du es gemacht hast
2. mit einem Table (\matrix)

Mit einem Table lassen sich die Zeilen- und Spaltenweiten angeben (column sep, row sep), die gelten dann für alle Elemente.

Dann gibt es die Möglichkeit, wie schon gesagt worden ist, mit xshift und yshift die einzelnen Elemente relativ zu verschieben.

Und dann gibt es noch die Möglichkeit, mit einer for-loop die Elemente iterativ anzuordnen (\foreach).

Mehr gibt es meines Wissens nach nicht.

Mit diesen Möglichkeiten kann alles angeordnet werden, was man anordnen will.


Viele Grüße,

Klaus