다중 부분 직사각형에서 부분 사이의 공간을 줄이고 싶습니다. 수평으로 분할된 직사각형의 경우 명령 \hskip
다음 에 이를 달성했습니다 \nodepart
.
수직으로 분할된 직사각형의 경우 유사하게 시도 \hskip
하고 \vskip
. 불행하게도 컴파일러는 \vskip
여기서 오류로 끝나는 것을 좋아하지 않습니다 . 첨부된 코드는 이를 보여줍니다.
내 예에서 작동하지 않는 이유는 무엇 vskip
이며 수직으로 분할된 직사각형 부분 사이의 공간을 어떻게 줄일 수 있습니까?
\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}
답변1
일반적인 상황에서는 노드 내용이 수평 상자에 배치됩니다 TeX
. 그러나 수평 상자에는 \vskip
다음 과 같은 명령이 포함될 수 없습니다.
\hbox{A \vskip-5pt B}
오류가 발생합니다. 이는 TeX
내부의 "내부 수평 모드" \hbox
이고 수직 명령(예: )이 오류를 생성하기 때문입니다 \vskip
(이러한 종류의 항목에 대한 유용한 참조는 인터넷에서 무료로 사용할 수 있는 Victor Eijkhout의 "TeX by Topic"입니다).
하지만 이것이 어떻게 도움이 됩니까 TikZ
? \vskip
노드 내부에서 작업하는 가장 깔끔한 방법은 노드의 내용을 사용할 수 있는 text width
수직 상자 안에 먼저 배치하도록 설정하는 것입니다.\vskip
\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}