尝试使用 tikz 节点内的数组环境和“在开始节点处执行”

尝试使用 tikz 节点内的数组环境和“在开始节点处执行”

我正在尝试打包一个 tikz 密钥math array,以便让我在数学模式下包装环境内节点的内容array,但我收到了无法调试的错误。

代码如下:

\documentclass{article}

\usepackage{tikz}
\usepackage{amsmath}
\usepackage{array}

\tikzset{
  math array/.style={
    execute at begin node=\(\begin{array}{#1},
    execute at end node=\end{array}\)
  },
}

\begin{document}

\begin{tikzpicture}
  \node {
    \(\begin{array}{c}
      x\\
      y
    \end{array}\)
  };

  % this does not work
  % \node[math array=c] {
  %   x\\
  %   y
  % };
\end{tikzpicture}

\end{document}

关键math array是尝试重现第一个节点中明确写的内容,但是在使用时(在注释部分)我会收到有关缺少括号的奇怪错误。

! Missing } inserted.
<inserted text>
                }
l.27     y

我做错了什么?有解释吗为什么这是发生了什么事?

编辑:我已将示例改为只有一列,以表明问题不在于符号&

答案1

node text我得到了它来工作https://tex.stackexchange.com/a/209188/4427

\documentclass{article}

\usepackage{tikz}
\usepackage{amsmath}
\usepackage{array}

\tikzset{
  math array/.style={
    execute at begin node=$\def\arraypreamble{#1},
    execute at end node=$,
  },
  node text/.style={node contents=\makearray{#1}},
}
\newcommand{\makearray}[1]{%
  \expandafter\array\expandafter{\arraypreamble}
  #1
  \endarray
}

\begin{document}

\begin{tikzpicture}
  \node[
    math array=@{}r@{}>{{}}l@{}, % better than rl
    node text={
      x &= y\\
      y &= z
    }
  ];
\end{tikzpicture}

\end{document}

相关内容