如何防止 tikz 矩阵破坏“对齐”环境的对齐?

如何防止 tikz 矩阵破坏“对齐”环境的对齐?

用矩阵表示的话是这样的:

\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}

在此处输入图片描述

相关内容