Em um retângulo multipartes quero reduzir o espaço entre as partes. Para um retângulo dividido horizontalmente, consegui isso com um \hskip
após o \nodepart
comando.
Para um retângulo dividido verticalmente, tentei de forma análoga e substituí \hskip
por \vskip
. Infelizmente o compilador não gosta \vskip
daqui e termina com um erro. O código anexado ilustra isso.
Por que vskip
não funciona no meu exemplo e como eu poderia reduzir alternativamente o espaço entre as partes divididas verticalmente do retângulo?
\documentclass{standalone}
\newcommand{\NodeTwoColsH}[2]{%
#1\nodepart{two}\hskip -5pt #2%
}
\newcommand{\NodeTwoColsV}[2]{%
#1\nodepart{two}\vskip -5pt #2%
}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart}
\begin{document}
\begin{tikzpicture}[
sibling distance = 2.5cm,
every node/.style = {
draw
},
split/.style = {
rectangle split draw splits=false,
rectangle split,
draw,
rectangle split parts=2
},
v split/.style = {
split
},
h split/.style = {
split,
rectangle split horizontal
}
]
\node{root}
child { node[h split] {\NodeTwoColsH{Left}{Right}} }
child { node[h split] {\NodeTwoColsH{Left}{Right}}
child { node[v split] {\NodeTwoColsV{Up}{Down}} }
child { node[v split] {\NodeTwoColsV{Up}{Down}} }
};
\end{tikzpicture}
\end{document}
Responder1
Em circunstâncias normais, o conteúdo do nó é colocado em uma TeX
caixa horizontal. Mas as caixas horizontais não podem conter comandos como \vskip
este
\hbox{A \vskip-5pt B}
produzirá um erro. Isso ocorre porque TeX
estar no "modo horizontal interno" dentro dos \hbox
comandos e verticais (por exemplo, \vskip
) produzirá um erro (uma referência útil para esse tipo de coisa é "TeX by Topic" de Victor Eijkhout que está disponível gratuitamente na internet).
Mas como isso ajuda TikZ
? Suponho que a maneira mais limpa de \vskip
trabalhar dentro de um nó é definir o text width
conteúdo do nó para que o conteúdo seja primeiro colocado dentro de uma caixa vertical onde \vskip
possa ser usado.
\documentclass[tikz, border=5]{standalone}
\usetikzlibrary{shapes.multipart}
\begin{document}
\begin{tikzpicture}[every node/.style={
rectangle split,
rectangle split draw splits=false,
rectangle split parts=2, draw, text width=1.5cm}]
\node at (0,0) {Top\nodepart{two} Bottom};
\node at (2,0) {Top\nodepart{two}\vskip-10pt Bottom};
\end{tikzpicture}
\end{document}