我想创建一个具有可自定义单元格高度的多部分矩形。我能想到的最接近的方法是文档多部分矩形可以自定义矩形空白部分的高度(如下图所示)。
WB
那么对于下面用以下代码块制作的图片,我该如何自定义包含、EX
和的单元格的单元格高度M
分别设置为 1cm、2cm 和 3cm 呢?
\documentclass[margin=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart}
\begin{document}
\begin{tikzpicture}
\node [draw,rectangle split,
rectangle split parts=4,
rectangle split empty part height=3cm,
rectangle split part fill={red!50, green!50, blue!50, yellow!50}] at (0,1)
{WB\nodepart{two}EX\nodepart{three}M\nodepart{four}};
\end{tikzpicture}
\end{document}
答案1
您可以使用matrix
代替multipart
节点。您需要为所有节点固定一个通用宽度以使其保持一致,但每个节点都可以根据需要设置高度。
\documentclass[margin=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\node[matrix of nodes, row sep=-\pgflinewidth, nodes={draw, minimum width=9mm},
row 1/.style={nodes={fill=red!50, minimum height=1cm}},
row 2/.style={nodes={fill=green!50, minimum height=2cm}},
row 3/.style={nodes={fill=blue!50, minimum height=3cm}},
row 4/.style={nodes={fill=yellow!50, minimum height=3cm}},
]{WB\\EX\\M\\~\\};
\end{tikzpicture}
\end{document}
答案2
编辑:
- 原始答案具有误导性。它并不像广告中说的那样有效 :-(。
- 在
tikz
包装手册第 820 页中指出
垂直分割时,矩形分割将满足所有
minimum width
要求,但任何要求minimum height
都会被忽略。相反,水平分割时,minimum height
要求将得到满足,但任何要求minimum width
都会被忽略。此外,inner sep
适用于所使用的每个部件,因此无法单独为特定部件指定。
- 因此,您需要另一种方法来重现所需的结果。一种方法是在 @Ignasi 的精彩回答中给出的,另一种可以通过使用
tabularray
包来获得:
\documentclass[margin=5mm]{standalone}
\usepackage{xcolor}
\usepackage{tabularray}
\begin{document}
\begin{tblr}{hlines, vlines,
colspec=c,
rows = {belowsep+=-0.3ex}, % if in cells are used only capital letters
row{1} = {8mm, bg=red!50},
row{2} = {16mm,green!50},
row{3} = {4mm,blue!50},
row{4} = {24mm,yellow!50}
}
WB \\
EX \\
M \\
\\
\end{tblr}
\end{document}
tikz
如果需要,可以将上面的表格代码插入节点中:
\begin{tikzpicture}
\node[inner sep=0pt] {<tblr code>};
\end{tikzpicture}