用矩阵表示的话是这样的:
\documentclass{standalone}
\usepackage[alignedleftspaceno]{amsmath}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\path node[matrix]
{%
\path node
{%
$%
\begin{aligned}
&2+2=4\\
&3+3+3=9\\
&4+4+4+4=16
\end{aligned}
$
};\\
};
\end{tikzpicture}
\end{document}
它看起来应该是这样的:
\documentclass{standalone}
\usepackage[alignedleftspaceno]{amsmath}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\path node
{%
$%
\begin{aligned}
&2+2=4\\
&3+3+3=9\\
&4+4+4+4=16
\end{aligned}
$
};
\end{tikzpicture}
\end{document}
答案1
你可以告诉 tikz matrix 不要乱用&
\documentclass{standalone}
\usepackage[alignedleftspaceno]{amsmath}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}
\path node[matrix,ampersand replacement=\&]
{%
\path node
{%
$%
\begin{aligned}
&2+2=4\\
&3+3+3=9\\
&4+4+4+4=16
\end{aligned}
$
};\\
};
\end{tikzpicture}
\end{document}
这意味着&
保持其正常使用,但如果外部 tikz 矩阵中有多个列,则无需\&
分隔&
单元格。
答案2
在 TikZ 矩阵中,&
接收与平常不同的定义(并且它成为一个活动字符)。
您可以添加一些保护代码\start@aligned
(它也适用于alignedat
):
\documentclass{standalone}
\usepackage[alignedleftspaceno]{amsmath}
\usepackage{etoolbox}
\usepackage{tikz}
\usetikzlibrary{positioning}
\makeatletter
\newcommand{\make@ampersand@safe}{%
\ifnum\catcode`\&=\active
\begingroup\lccode`\~=`\&\lowercase{\endgroup\let~=&}%
\fi
}
\pretocmd{\start@aligned}{\make@ampersand@safe}{}{}
\makeatother
\begin{document}
\begin{tikzpicture}
\path node[matrix]
{%
\path node
{%
$%
\begin{aligned}
&2+2=4\\
&3+3+3=9\\
&4+4+4+4=16
\end{aligned}
$%
};\\
};
\end{tikzpicture}
\end{document}