수직으로 분할된 직사각형 부분 사이에 \vskip을 사용하여 공간을 줄일 수 없습니다.

수직으로 분할된 직사각형 부분 사이에 \vskip을 사용하여 공간을 줄일 수 없습니다.

다중 부분 직사각형에서 부분 사이의 공간을 줄이고 싶습니다. 수평으로 분할된 직사각형의 경우 명령 \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}

여기에 이미지 설명을 입력하세요

관련 정보