hrule in Tikz-Kreisknoten

hrule in Tikz-Kreisknoten

Ich habe Probleme mit dem Layout der inneren Knoten bei Tikz. Im Grunde möchte ich unter der ersten Textzeile innerhalb eines Knotens eine Zeile hinzufügen, die ihn ungleichmäßig aufteilt. Hier ist ein Versuch:

Zwei Tikz-Knoten, einer mit einem unglaublich großen Leerzeichen im ersten Teil und ein anderer nicht geteilt

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

Die splitOption scheint die Auslassungspunkte in zwei Hälften teilen zu können, sodass über der ersten Textzeile ein riesiger weißer Raum bleibt (siehe NODE1). Ich möchte etwas wie NODE2 rendern, aber mit einer Linie, die die erste Zeile von den anderen trennt. Hier ist ein Beispiel für die gewünschte Ausgabe:

Die gewünschte Ausgabe

\hruleIch habe versucht , den Befehl direkt nach dem Text " " hinzuzufügen NODE2, aber das scheint nicht möglich zu sein. Haben Sie eine Idee, wie das geht?

Übrigens, bitte beachten Sie, dass ich sahdiese verwandte Frageund seine akzeptierte Antwort, aber ich glaube, es geht nicht auf mein Problem ein.

Antwort1

So etwas in der Art?

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

Bildbeschreibung hier eingeben

Antwort2

Sie könnten einfach eine längere [h]Regel zeichnen und den Knoten ausschneiden:

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

Bildbeschreibung hier eingeben

Sie können mit dieser Linie wie mit jeder anderen experimentieren, \ruleum die Position oder Breite zu ändern. Das \clapstellt sicher, dass die (imaginäre) Länge dieser Linie die Größe des Knotens nicht sprengt. Das clipin der Stildefinition stellt sicher, dass nur der Teil der Linie tatsächlich gezeichnet wird, der innerhalb des Knotens liegt.

verwandte Informationen