無法使用 \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中的“內部水平模式”會產生錯誤(此類內容的有用參考是 Victor Eijkhout 的“TeX by Topic”,可在互聯網上免費獲得)。\hbox\vskip

但這有什麼幫助呢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}

在此輸入影像描述

相關內容