hrule を tikz サークルノードに

hrule を tikz サークルノードに

私は Tikz で内部ノードのレイアウトに苦労しています。基本的には、ノード内の最初のテキスト行の下に線を追加して、不均等に分割したいと考えています。ここで試してみます:

2つのtikzノード。1つは最初の部分に馬鹿みたいに大きな空白があり、もう1つは分割されていない

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{shapes}

\begin{document}
    \begin{tikzpicture}[auto, node distance=3cm,
        style1/.style={ellipse split, draw, align=center},
        style2/.style={ellipse, draw, , align=center},
    ]

        \node[style1] (1) {NODE1 \nodepart{lower} long name \\ foo \\ bar \\ baz};

        \node[style2] (2) [right of=1] {NODE2 \\ long name \\ foo \\ bar \\ baz};

    \end{tikzpicture}
\end{document}

このsplitオプションは省略記号を半分に分割し、テキストの最初の行の上に巨大な空白を残すことができるようです (NODE1 を参照)。NODE2 のようなものをレンダリングしたいのですが、最初の行と他の行を区切る線が必要です。以下は、望ましい出力の例です。

望ましい出力

\hrule「 」テキストの直後にコマンドを追加しようとしましたNODE2が、できないようです。これを行う方法について何かアイデアはありますか?

ちなみに、私が見たのはこの関連する質問そして、その受け入れられた答えですが、それは私の問題には対処していないと思います。

答え1

そういうことですか?

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{shapes,fit,positioning}

\begin{document}
    \begin{tikzpicture}[auto, node distance=3cm,
        style1/.style={ellipse split, draw, align=center},
        style2/.style={ellipse, draw, , align=center},
        lower elli/.style={align=center},
        fit elli/.style={ellipse,draw,inner sep=0pt,
        path picture={\draw ([xshift=-1cm]#1.south west)-- 
        ([xshift=1cm]#1.south east);}}
    ]

        \node[style1] (1) {NODE1 \nodepart{lower} long name \\ foo \\ bar \\ baz};

        \node[style2] (2) [right=1cm of 1] {NODE2 \\ long name \\ foo \\ bar \\ baz};

        \node (3a) [right=3.5cm of 2.north,anchor=north] {NODE3};
        \node[lower elli] (3b)[below=0pt of 3a] {long name \\ foo \\ bar \\ baz};
        \node[fit elli=3a,fit=(3a) (3b)]{};
    \end{tikzpicture}
\end{document}

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

答え2

より長い [h] ルールを描画してノードをクリップすることもできます。

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes}
\def\clap#1{\hbox to 0pt{\hss#1\hss}}
\begin{document}
\begin{tikzpicture}[auto, node distance=3cm,
    styleshess/.style={ellipse, draw, align=center,clip},
]
    \node[styleshess] (2) {NODE2\\\clap{\rule{\linewidth}{.4pt}}\\ long name \\ foo \\ bar \\ baz};
\end{tikzpicture}
\end{document}

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

\rule他の線と同様に、位置や幅を変更するためにこの線を操作できます。\clapは、この線の (仮想的な) 長さがノードのサイズを膨らませないようにします。clipスタイル定義の は、ノード内にある線の部分だけが実際に描画されるようにします。

関連情報