PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Abstände in tikz picture und Position auf der Seite



Seraphim
05-06-2011, 20:42
Hallo,

ich habe eine ganz einfach Grafik mit tikz erstellt. Allerdings setzt latex zwischen den beiden Unterknoten einen riesigen Abstand und dehnt das ganze Bild über die Seitenränder aus. Ich habe keine Ahnung, woran das liegt. Sowohl die Option "sibling distance" als auch "node distance" haben das nicht ändern können.

Hat jemand eine Idee? Die Grafik sollte natürlich zentriert zwischen den Seitenrändern liegen...

Ps.: Minimalbeispiel
\documentclass[a4paper,12pt]{article}
\usepackage[ngerman]{babel}

\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}


\usepackage{tikz}
\usetikzlibrary{arrows}
\usetikzlibrary{positioning}

\usepackage{setspace}

\usepackage{color}
\definecolor{grey}{gray}{.75}

\setlength{\parindent}{0mm}
\usepackage[a4paper,left=60pt,right=120pt,top=60pt,bottom=60pt]{geometry}

\linespread{1.5}

\begin{document}
\begin{center}
\begin{singlespacing}
\begin{tikzpicture}[line width=1pt, sibling distance=10pt]
\tikzstyle{every node}=[draw, shape=rectangle, fill=grey, rounded corners=3pt]
\node (A) at (0,0){\parbox[c][20pt]{250pt}{\begin{center}Anthropologische Grundlagen der Schriftsprache\end{center}}};
\node (B)[below right=of A]{\parbox[c][60pt][t]{180pt}{\begin{center}\underline{Phylogenese}\vspa ce{5pt}\\Entwicklung der Gattung Mensch\end{center}}};
\node (C)[below left=of A]{\parbox[c][60pt][t]{180pt}{\begin{center}\underline{Ontogenese}\vspac e{5pt}\\Entwicklung eines Individuums\\über die Lebensspanne\end{center}}};
\draw[-to,shorten >=6pt](A.south) to (B.north);
\draw[-to,shorten >=6pt](A.south) to (C.north);
\draw[-to,shorten >=6pt](B.south) to [bend left=45](C.south);
\end{tikzpicture}
\end{singlespacing}
\end{center}

\end{document}

esdd
05-06-2011, 22:20
Hallo,

mit below right=of A gibst du für die Node B vor, dass sich ihr Mittelpunkt im Winkel von -45° unter dem Mittelpunkt von A befindet. Durch below left=of A befindet sich der Mittelpunkt von C im Winkel von 225°(=180°+45°) unterhalb des Mittelpunktes von A.

Für das Beispiel wäre eine mögliche Lösung below right=of A.south bzw. below left=of A.south zu nehmen und gleichzeitig noch xshift zu verwenden, so dass B und C näher zusammen rücken:

\documentclass[12pt]{article}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage[ngerman]{babel}

\usepackage{tikz}
%\usetikzlibrary{arrows}
\usetikzlibrary{positioning}
\definecolor{grey}{gray}{.75}

\usepackage[margin=60pt,right=120pt]{geometry}

\begin{document}
\begin{center}
\begin{tikzpicture}[line width=1pt]
\tikzset{every node/.style={draw,fill=grey,rounded corners=3pt}}
\node (A) at (0,0){\parbox[c][20pt]{250pt}{\centering Anthropologische Grundlagen der Schriftsprache}};
\node (B)[below right=of A.south,xshift=-10pt]{\parbox[c][60pt][t]{180pt}{\centering\underline{Phylogenese}\vspace{5 pt}\\Entwicklung der Gattung Mensch}};
\node (C)[below left=of A.south,xshift=10pt]{\parbox[c][60pt][t]{180pt}{\centering\underline{Ontogenese}\vspace{5p t}\\Entwicklung eines Individuums\\über die Lebensspanne}};
\draw[-to,shorten >=6pt](A.south) to (B.north);
\draw[-to,shorten >=6pt](A.south) to (C.north);
\draw[-to,shorten >=1pt](B.south) to [bend left=45](C.south);
\end{tikzpicture}
\end{center}

\end{document}

Gruß
Elke

PS: Eine mögliche Alternative wäre

\node(B)[below=of A,anchor=north west,xshift=25pt]{\parbox[c][60pt][t]{180pt}{\centering\underline{Phylogenese}\vspace{5 pt}\\Entwicklung der Gattung Mensch}};
\node(C)[below=of A,anchor=north east,xshift=-25pt]{\parbox[c][60pt][t]{180pt}{\centering\underline{Ontogenese}\vspace{5p t}\\Entwicklung eines Individuums\\über die Lebensspanne}};

Dabei wird die linke obere Ecke der Node B unter der Mitte von A positioniert und dann um 25pt nach rechts verschoben, analog für C in entgegengesetzter Richtung. Damit haben die Noden B und C einen Abstand von 50pt.

bobmalaria
06-06-2011, 10:36
hi,

du koenntest weiterhin deinen code noch etwas anpassen und die tikz funktionen text width und align verwenden um die diese parbox-konstruktionen zu ersparen.
darueber hinaus kannst du dir \\ in kombination mit \vspace sparen wenn du einfach \\[<laenge>] verwendest. mit inner sep= kannst du dann auch noch vorgeben wieviel innerer rand innerhalb eines nodes
vorgesehen wird. so kannst du deine kaesten etwas vergroessern wenn die schrift zu nahe am rand klebt.


\documentclass[12pt]{article}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage[ngerman]{babel}

\usepackage{tikz}
%\usetikzlibrary{arrows}
\usetikzlibrary{positioning}
\definecolor{grey}{gray}{.75}

\usepackage[margin=60pt,right=120pt]{geometry}

\begin{document}

\begin{center}
\begin{tikzpicture}[line width=1pt,align=center]
\tikzset{every node/.style={draw,fill=grey,rounded corners=3pt}}
\node[text width=300pt,inner sep=20pt] (A) at
(0,0){Anthropologische Grundlagen der Schriftsprache};
\node[text width=150pt] (B)[below
right=of A.south,xshift=-10pt]{\underline{Phylogenese}\\[5pt]Entwicklung der
Gattung Mensch};
\node[text width=150pt] (C)[below left=of
A.south,xshift=10pt]{\underline{Ontogenese}
\\[5pt]Entwicklung eines Individuums\\über die Lebensspanne};
\draw[-to,shorten >=6pt](A.south) to (B.north);
\draw[-to,shorten >=6pt](A.south) to (C.north);
\draw[-to,shorten >=1pt](B.south) to [bend left=45](C.south);
\end{tikzpicture}
\end{center}

\end{document}

Seraphim
15-08-2011, 14:15
Vielen Dank! Ich war länger weg und habe mich deswegen nicht gemeldet, was mir Leid tut. ich habe mich jetzt für folgende Variante entschieden:


% Allgemeine Einstellungen
%
\documentclass[a4paper,12pt,oneside]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[%
includehead,
includefoot,
nofoot,
left=3cm,
right=2cm,
top=1.2cm,
bottom=2.3cm
]{geometry}
\usepackage{setspace}
\onehalfspacing
%
% Zeichnen
%
\usepackage{tikz}
\usetikzlibrary{arrows}
\usetikzlibrary{positioning}
%
% Styles für die Grafiken
%
\tikzset{%
Z/.style={%
rectangle,
minimum size=6mm,
very thick,
draw=black,
top color=white,
bottom color=blue!20,
font=\itshape
}
}
\tikzset{%
K/.style={%
rectangle,
minimum size=6mm,
minimum width=22mm,
rounded corners=3mm,
very thick,
draw=black,
top color=white,
bottom color=blue!20,
font=\itshape
}
}
\tikzset{%
Y/.style={%
rectangle,
minimum size=6mm,
minimum width=4cm,
rounded corners=3mm,
very thick,
draw=black,
top color=white,
bottom color=blue!20,
font=\itshape
}
}

\begin{document}

\begin{center}
\singlespacing
\begin{tikzpicture}[node distance=5mm and 5mm,line width=1pt,>=latex]
\node(U)[Y]{\parbox[c]{8.2cm}{\centering \textbf{philosophische Anthropologie} \linebreak (Anthropologische Grundlagen der Schrift)}};
\node(U1)[Y, below left=of U,xshift=4.2cm,yshift=-2cm]{\parbox[c][1,4cm]{6cm}{\centering\textbf{Phylogenese}\linebreak\ Entwicklung der Gattung Mensch}};
\node(U2)[Y, below right=of U,xshift=-4.2cm,yshift=-2cm]{\parbox{6cm}{\centering\textbf{Ontogenese}\linebr eak\ Entwicklung eines Individuums über die Lebensspanne}};
\draw[->,shorten >=10pt](U.south) to [bend right=15pt] (U1.north);
\draw[->,shorten >=10pt](U.south) to [bend left=15pt](U2.north);
\draw[<->,shorten >=5pt](U1.east) to [bend right=15pt,shorten <=5pt](U2.west);
\end{tikzpicture}
\end{center}
\end{document}

Liebe Grüße

Seraphim