更新

更新

我在使用 Ti 时遇到了一个奇怪的问题Zrectangle split horizontalrectangle split ignore empty parts。问题是,如果您有空部分(未使用),那么最后一个矩形似乎在其右侧有一个额外的规则 - 请注意,在下面的示例中,第 2-4 行的规则宽度似乎加倍了:

在此处输入图片描述

这个问题的证据可以在其他问题中看到(例如,用tikzpicture画树,节点折叠问题) 尽管我发现这一特定问题尚未引起任何评论。

有办法解决这个问题吗?

更新

我可以确认这确实不是发生(或者似乎没有发生)垂直分割节点。

\documentclass{article}

\usepackage{tikz}

\usetikzlibrary{shapes.multipart}

\tikzset{hmul/.style={
    rectangle split,
    rectangle split horizontal,
    rectangle split parts = 4,
    rectangle split ignore empty parts,
    draw
    }%
}

\begin{document}

\begin{tikzpicture}
    \node[hmul]{\nodepart{one}1 \nodepart{two}2 \nodepart{three}3 \nodepart{four}4};
\end{tikzpicture}

\begin{tikzpicture}
    \node[hmul]{\nodepart{one}1 \nodepart{two}2 \nodepart{three}3};
\end{tikzpicture}

\begin{tikzpicture}
    \node[hmul]{\nodepart{one}1 \nodepart{two}2};
\end{tikzpicture}

\begin{tikzpicture}
    \node[hmul]{\nodepart{one}1};
\end{tikzpicture}

\end{document}

答案1

我修改了代码,分割线用红色绘制

现在你可以看到问题了:在垂直情况下,所有小盒子都是相同的高度。但水平分割的情况并非如此。

注意到14(和3)不是水平居中的吗?这是因为最左边的边界比 短line width/2;同样,最右边的边界比 短line width/2

所以当 PGF 想要绘制three和之间的分割线时four,它会将其绘制在超出右边界 的等差数列位置上line width/2

我不知道如何解决这个问题。请随意进行加减运算 \pgflinewidth\innerxsep诸如此类的操作。

答案2

至于如何避免这条难看的粗线,虽然一些图书馆维护者找到了解决这个问题的方法,但我提出了一种使用数字参数的解决方案。

矩形分割忽略空单元格

\documentclass{article}

\usepackage{tikz}

\usetikzlibrary{shapes.multipart}

\tikzset{hmul/.style={
    rectangle split,
    rectangle split horizontal,
    rectangle split parts = #1,
    rectangle split ignore empty parts,
    draw
    }%
}

\begin{document}

\begin{tikzpicture}
    \node[hmul=4]{\nodepart{one}1 \nodepart{two}2 \nodepart{three}3 \nodepart{four}4};
\end{tikzpicture}

\begin{tikzpicture}
    \node[hmul=3]{\nodepart{one}1 \nodepart{two}2 \nodepart{three}3};
\end{tikzpicture}

\begin{tikzpicture}
    \node[hmul=2]{\nodepart{one}1 \nodepart{two}2};
\end{tikzpicture}

\begin{tikzpicture}
    \node[hmul=1]{\nodepart{one}1};
\end{tikzpicture}

\end{document}

答案3

另外,使用matrix节点来绘制这类结构也很容易。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}

\tikzset{hmul/.style={
    matrix,
    matrix of nodes,
    inner sep=0pt,
    nodes={
        anchor=center,
        inner sep=.3333em,
        draw},
    column sep=-\pgflinewidth,
    }%
}

\begin{document}
\begin{tikzpicture}
    \node[hmul]{1 & 2 & 3 & 4\\};
\end{tikzpicture}

\begin{tikzpicture}
    \node[hmul]{1 & 2 & 3\\};
\end{tikzpicture}

\begin{tikzpicture}
    \node[hmul]{1 & 2\\};
\end{tikzpicture}

\begin{tikzpicture}
    \node[hmul]{1\\};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容