TikZ&PGF 手册 3.0.1a 版在第 20 节(矩阵和对齐)、第 20.3.2 小节(设置和调整列和行间距)中指出。307:
该
between origins
选项只能用于第一行中提到的列,也就是说,您不能为仅在后面的行中引入的列指定此选项。
我对“第一行中提到的列”和“仅在后面的行中引入的列”这两个表述感到困惑。我如何知道在某一行中提到了哪些列?我如何知道在哪一行中引入了某一列?
所有列都出现在每一行中,反之亦然,这不是每个表/矩阵的固有结构属性吗?
答案1
ATikZ matrix
只是按行组织的节点集合。每行中的元素用 分隔&
,每行的末尾用 声明\\
。但不需要所有行都具有相同数量的列。然后可以在每个新行中声明新列。并非所有列都必须在第一行中声明。
举个例子:
第一行仅声明两个节点,而其他行都有三个节点,并且第一列和第二列的节点之间的距离适用,between origins
而第二列和第三列之间的距离不适用。
\documentclass[tikz,margin=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
\matrix [draw,column sep={1cm,between origins},nodes=draw]
{
\node(a1) {123}; & \node(b1) {1};\\
\node(a2) {12}; & \node(b2) {12}; & \node(c2) {1}; \\
\node(a3) {1}; & \node(b3) {123}; & \node(c3) {1}; \\
};
\draw [<->,red,thick] (a1.center) -- ++(0:1cm) node [above,midway] {1cm};
\draw [<->,red,thick] (a2.center) -- ++(0:1cm) node [above,midway] {1cm};
\draw [<->,red,thick] (a3.center) -- ++(0:1cm) node [above,midway] {1cm};
\draw [<->,red,thick] (b2.center) -- ++(0:1cm) node [above,midway] {1cm};
\draw [<->,red,thick] (b3.center) -- ++(0:1cm) node [above,midway] {1cm};
\end{tikzpicture}
\end{document}