多部分节点的 tikz 矩阵

多部分节点的 tikz 矩阵

我不知道如何将多部分节点的数据放入矩阵中。这允许吗?以下 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

您的代码没问题;我只是使用matrixshapes.multipart库。

还有一件事:本质上,TikZ 只有一个命令:\path;并且 TikZ 绘图只是沿着路径放置nodes 和s。因此,尽管picPGF 手册通常写

\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

请让我知道这是否解决了您的问题或者您是否需要进一步的帮助。

相关内容