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:
\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 split
opçã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:
Tentei adicionar \hrule
o comando logo após o NODE2
texto "", 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}
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}
Você pode brincar com essa linha como com qualquer outra \rule
para modificar o posicionamento ou a largura. O \clap
garante que o comprimento (imaginário) dessa linha não aumente o tamanho do nó. O clip
na definição de estilo garante que apenas a parte da linha que cai dentro do nó seja realmente desenhada.