是否有可能沿着链使用 TikZ 矩阵?

是否有可能沿着链使用 TikZ 矩阵?

matrix是否可以沿着使用 TikZ chain

以下代码尝试创建一个由 a node、 amatrix和 another组成的链node

\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{positioning,chains}

\begin{document}

\begin{tikzpicture}[start chain]
  \node [on chain] {XYZ};

  \matrix [on chain]
  {
    \node {A}; \\
    \node {B}; \\
    \node {C}; \\
  };

  \node [on chain] {123};
\end{tikzpicture}

\end{document}

但是,如果我尝试编译,我会收到错误“Package pgf 错误:没有已知名为 chain-2 的形状。”(有趣的是,如果我删除最后一个节点,使得矩阵后面没有任何内容,那么编译时就不会出现错误。)为什么会出现此错误?

当然,直接使用positioning库就足够简单了。所以,我对这个问题的兴趣主要在于其本身;我并没有想到矩阵链在什么重要、具体的用途上会至关重要。

答案1

链上的节点被命名为,(chainname-#)但矩阵没有提供此命名方案(似乎是一个错误)。因此,最安全的方法是明确命名链上的矩阵节点。

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,chains,matrix}
\begin{document}
\begin{tikzpicture}[start chain]
  \node [on chain] {XYZ};
  \node [on chain] {123};
  \node [on chain,matrix of nodes]  (chain-3) {    A \\    B \\    C \\  };
  \node [on chain] {$\alpha\beta\gamma$};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

我遇到了同样的问题,我通过将矩阵放在嵌套的tikzpictureie中来解决这个问题

\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{positioning,chains}

\begin{document}

\begin{tikzpicture}[start chain]
  \node [on chain] {XYZ};

  \node [on chain] {
    \begin{tikzpicture}
      \matrix
      {
        \node {A}; \\
        \node {B}; \\
        \node {C}; \\
      };
    \end{tikzpicture}
  };
  \node [on chain] {123};
\end{tikzpicture}

\end{document}

答案3

现在我自己也曾多次遇到过这个问题,所以我进行了调查。

是的,alias它不适用于矩阵,因为它们根本不会出现别名。

密钥以以下形式alias = <alias>累积别名\tikz@alias

\pgfnodealias{<alias>}{<name>}

当节点最终构建完成并且<name>(即节点/矩阵/坐标的“真实”名称)最终确定时\tikz@alias,将执行此操作。

它只是矩阵代码中缺失了。在这个小例子中,我没有注意到任何不良影响。

代码

\documentclass[tikz]{standalone}
\usetikzlibrary{chains}
\ExplSyntaxOn \makeatletter
\tl_replace_once:Nnn
  \tikz@do@matrix@cont
  { \tikz@node@finish }
  { \tikz@alias \tikz@node@finish }
\makeatother \ExplSyntaxOff
\begin{document}
\begin{tikzpicture}[start chain]
\node [on chain] {XYZ};
\matrix [on chain] {
  \node {A}; \\
  \node {B}; \\
  \node {C}; \\};
\node [on chain] {123};
\end{tikzpicture}
\end{document}

相关内容