複数の部分から成る長方形で、部分間のスペースを縮小したいです。水平に分割された長方形の場合は、コマンド\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}