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:
\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 split
Option 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:
\hrule
Ich 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}
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}
Sie können mit dieser Linie wie mit jeder anderen experimentieren, \rule
um die Position oder Breite zu ändern. Das \clap
stellt sicher, dass die (imaginäre) Länge dieser Linie die Größe des Knotens nicht sprengt. Das clip
in der Stildefinition stellt sicher, dass nur der Teil der Linie tatsächlich gezeichnet wird, der innerhalb des Knotens liegt.