如何创建具有自定义单元格高度的多部分矩形?

如何创建具有自定义单元格高度的多部分矩形?

我想创建一个具有可自定义单元格高度的多部分矩形。我能想到的最接近的方法是文档多部分矩形可以自定义矩形空白部分的高度(如下图所示)。

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}

相关内容