他のノードのサイズに基づいてノードの最小の高さを計算する

他のノードのサイズに基づいてノードの最小の高さを計算する

次の例を考えてみましょう。

\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}

minimum heightノード A と D の上端が揃うようにノード D を計算するにはどうすればよいでしょうか?

それとも別のアプローチを使うべきでしょうか?

答え1

構文を使用した 1 つの可能性を次に示しますlet。ノードをtext depth使用して適切なサイズを指定します。

\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}

ここに画像の説明を入力してください

問題とは関係ありませんが、ノードを配置するために、node distance(新しい長さの定義が保存されます) とライブラリによって提供される機能を使用しました。positioning

関連情報