我正在尝试打包一个 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}