我不知道如何将多部分节点的数据放入矩阵中。这允许吗?以下 MRE 效果很好
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{trees, shapes, arrows, arrows.meta, matrix, calc, graphs,
plotmarks, backgrounds, cd}
\begin{document}
\begin{tikzpicture}
\node[rectangle split, rectangle split parts=2] at (1,1) {1 \nodepart{second} A};
\matrix (M) [matrix of math nodes,
nodes={rectangle split, rectangle split parts=2}] {
X & 2 \\
};
\end{tikzpicture}
\end{document}
但是,如果我用或不带花括号替换矩阵中的 X {1 \nodepart{second} A}
,我得到
ERROR: Missing } inserted.
--- TeX said ---
<inserted text>
}
l.11 {1 \nodepart{second}
A} & 2 \\
--- HELP ---
TeX has become confused. The position indicated by the error locator
is probably beyond the point where the incorrect input is.
我是不是犯了明显的错误?有解决方法吗?
答案1
您的代码没问题;我只是使用matrix
和shapes.multipart
库。
还有一件事:本质上,TikZ 只有一个命令:\path
;并且 TikZ 绘图只是沿着路径放置node
s 和s。因此,尽管pic
PGF 手册通常写
\matrix [matrix of nodes] {...}
但根据我的经验,最好这样写(这样错误会少一些)
\path (2,3) node[matrix,matrix of nodes] {...}
同样,我喜欢写作,\path (1,1) node[] {};
而不是\node[] {} at (1,1);
以下是我的写作风格的代码。希望这对您有所帮助!
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart, matrix}
\begin{document}
\begin{tikzpicture}
\path
(1,1) node[rectangle split, rectangle split parts=2]{1 \nodepart{second} $A$};
\path
(0,0) node[matrix,matrix of math nodes,
nodes={rectangle split, rectangle split parts=2}] (M) {
X & 2 \\
};
\end{tikzpicture}
\end{document}
答案2
我明白了,您的问题是关于 LaTeX 中的 TikZ 矩阵。您遇到的问题是由于 TikZ 矩阵中的节点命名方式所致。当您在 TikZ 中定义节点矩阵时,矩阵的每个单元都会自动获得遵循模式的节点名称matrixname-rownumber-columnnumber
。例如,矩阵中的第一个单元M
名为M-1-1
。
在您的示例中,您将一个节点放置在矩阵单元内,而该单元也是一个节点。这意味着单元内的节点不会自动获得遵循通常模式的名称,因此会出现错误“没有名为‘M-1-1’的形状已知。”
解决此问题的方法是手动命名内部节点,如下所示:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart, matrix}
\begin{document}
\begin{tikzpicture}
\matrix (M) [matrix of nodes,
nodes={rectangle split, rectangle split parts=2, draw, anchor=center}] {
\node[name=M-1-1] {1 \nodepart{second} A}; & 2 \\
};
\end{tikzpicture}
\end{document}
在此代码中,\node[name=M-1-1] {1 \nodepart{second} A}
命名矩阵第一个单元格内的节点。现在,您可以在 TikZ 图片的其他部分M-1-1
使用该名称引用此节点。M-1-1
请让我知道这是否解决了您的问题或者您是否需要进一步的帮助。