hrule no nó do círculo tikz

hrule no nó do círculo tikz

Estou lutando com o layout do nó interno com o Tikz. Basicamente, quero adicionar uma linha abaixo da primeira linha de texto dentro de um nó, dividindo-o de forma desigual. Aqui está uma tentativa:

Dois nós tikz, um com um espaço em branco estupidamente enorme na primeira parte e outro não dividido

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

A splitopção parece ser capaz de dividir as reticências ao meio, deixando um enorme espaço em branco acima da primeira linha do texto (ver NODE1). Desejo renderizar algo como NODE2, mas com uma linha separando a primeira linha das demais. Aqui está um exemplo da saída desejada:

A saída desejada

Tentei adicionar \hruleo comando logo após o NODE2texto "", mas não parece ser possível. Você tem alguma ideia de como fazer isso?

A propósito, observe que eu viesta questão relacionadae sua resposta aceita, mas acredito que não resolve o meu problema.

Responder1

Algo desse tipo?

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

insira a descrição da imagem aqui

Responder2

Você poderia simplesmente desenhar uma regra [h] mais longa e cortar o nó:

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

insira a descrição da imagem aqui

Você pode brincar com essa linha como com qualquer outra \rulepara modificar o posicionamento ou a largura. O \clapgarante que o comprimento (imaginário) dessa linha não aumente o tamanho do nó. O clipna definição de estilo garante que apenas a parte da linha que cai dentro do nó seja realmente desenhada.

informação relacionada