我在使用 Ti 时遇到了一个奇怪的问题钾Zrectangle split horizontal
和rectangle 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
答案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}