Betrachten Sie das folgende Beispiel:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{xcolor}
\begin{document}
\def\mydist{1mm}
\begin{tikzpicture}[
mystyle/.style={
rectangle,
rounded corners,
draw=black,
very thick,
text width=2cm,
}
]
\node [mystyle] (A) {A\\text\\text\\text};
\node [mystyle, anchor=north] (B) at ($(A.south) - (0,\mydist)$) {B\\text\\text};
\node [mystyle, anchor=south west] (C) at ($(B.south east) + (\mydist,0)$) {C\\text};
% here is the problem
\node [mystyle, anchor=south, red] (D) at ($(C.north) + (0,\mydist)$) {D\\???};
\end{tikzpicture}
\end{document}
Wie kann ich das für Knoten D so berechnen, minimum height
dass die Oberkanten der Knoten A und D auf einer Linie liegen?
Oder sollte ich einen anderen Ansatz verwenden?
Antwort1
Hier ist eine Möglichkeit mit der let
Syntax; die Knoten text depth
werden verwendet, um die richtige Größe anzugeben:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,calc}
\usepackage{xcolor}
\begin{document}
\begin{tikzpicture}[
mystyle/.style={
rectangle,
rounded corners,
draw=black,
line width=1pt,
text width=2cm,
},
node distance=2mm
]
\node [mystyle] (A) {A\\text\\text\\text\\text};
\node [mystyle,below=of A] (B) {B\\text\\text};
\node [mystyle, right=of B.south east,anchor=south west] (C) {C\\text};
\path let \p1=([yshift=2mm]C.north), \p2=(A.north) in
node [mystyle, anchor=south,red,text depth={\y2-\y1-\pgflinewidth-1.1\baselineskip},above=of C]
(D) {A\\B\\C\\D};
\end{tikzpicture}
\end{document}
Hat nichts mit dem Problem zu tun, aber ich habe die von der Bibliothek bereitgestellten Funktionen zum Positionieren der Knoten verwendet node distance
(so entfällt die Definition einer neuen Länge) .positioning