Estoy luchando con el diseño del nodo interno con Tikz. Básicamente, quiero agregar una línea debajo de la primera línea de texto dentro de un nodo, dividiéndola de manera desigual. Aquí hay un intento:
\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}
La split
opción parece poder dividir los puntos suspensivos por la mitad, dejando un enorme espacio en blanco encima de la primera línea de texto (ver NODO1). Deseo representar algo como NODE2, pero con una línea que separa la primera línea de las demás. A continuación se muestra un ejemplo del resultado deseado:
Intenté agregar \hrule
un comando justo después del NODE2
texto " ", pero no parece posible. ¿Tienes alguna idea sobre cómo hacer esto?
Por cierto, tenga en cuenta que viesta pregunta relacionaday su respuesta aceptada, pero creo que no aborda mi problema.
Respuesta1
¿Algo por el estilo?
\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}
Respuesta2
Podrías simplemente dibujar una regla [h] más larga y recortar el nodo:
\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}
Puedes jugar con esa línea como con cualquier otra \rule
para modificar la posición o el ancho. Se \clap
asegura de que la longitud (imaginaria) de esa línea no aumente el tamaño del nodo. La clip
definición de estilo garantiza que solo se dibuje realmente la parte de la línea que cae dentro del nodo.