条件对齐环境未解析

条件对齐环境未解析

我尝试使用快捷方式设置具有不同括号的矩阵。我的解决方案在 displaymath 和 equation 环境中运行良好。但是,当我尝试在 align 中使用它时,就会出现错误。

是否有人知道一个解决方案,我可以在 align 中仍然使用我的定义?

\documentclass{scrreprt}

\usepackage{amsmath}

\newcommand{\Mtrx}[2][1]{
    \ifx0#1
        \begin{matrix}  #2 \end{matrix}
    \else\ifx1#1
        \begin{bmatrix}  #2 \end{bmatrix}
    \else\ifx2#1
        \begin{pmatrix}  #2 \end{pmatrix}
    \fi\fi\fi
}

\begin{document}
% everything as expected here:
\begin{equation}
    \Mtrx[2]{A & B \\ C & D} = \Mtrx[1]{c\\d}
\end{equation}

% The following align-equation gives an error:
\begin{align}
    \Mtrx[2]{A & B \\ C & D} &= 0
\end{align}

\end{document}

答案1

只需在定义中添加括号即可解决该问题\Mtrx

\newcommand{\Mtrx}[2][1]{{% <--- brace
    \ifx0#1
        \begin{matrix}  #2 \end{matrix}
    \else\ifx1#1
        \begin{bmatrix}  #2 \end{bmatrix}
    \else\ifx2#1
        \begin{pmatrix}  #2 \end{pmatrix}
    \fi\fi\fi
}} % <--- brace

不过,我会这样做:

\documentclass{scrreprt}

\usepackage{amsmath}

\newcommand{\Mtrx}[2][]{%
  \begin{#1matrix} #2 \end{#1matrix}
}

\begin{document}

\begin{equation}
    \Mtrx[p]{A & B \\ C & D} = \Mtrx[b]{c\\d}
\end{equation}

\begin{align}
    \Mtrx[p]{A & B \\ C & D} &= 0
\end{align}

\end{document}

如果你真的喜欢数字,

\documentclass{scrreprt}

\usepackage{amsmath}

\newcommand{\Mtrx}[2][0]{%
  \begin{\mtrxtype{#1}matrix} #2 \end{\mtrxtype{#1}matrix}
}
\newcommand{\mtrxtype}[1]{%
  \ifcase#1\or b\or p\fi
}

\begin{document}

\begin{equation}
    \Mtrx[2]{A & B \\ C & D} = \Mtrx[1]{c\\d}
\end{equation}

\begin{align}
    \Mtrx[2]{A & B \\ C & D} &= 0
\end{align}

\end{document}

在此处输入图片描述

答案2

错误是由于使用 & 符号引起的。新命令中的这些符号必须以某种方式隐藏起来align。例如尝试

\begin{align}
{\Mtrx[2]{A & B \\ C & D}} &= 0
\end{align}

或者重新定义你的命令如下:

\documentclass{scrreprt}

\usepackage{amsmath}

\newcommand{\Mtrx}[2][1]{
    \ifx 0#1
        {\begin{matrix}  #2 \end{matrix}}
    \else\ifx 1#1
        {\begin{bmatrix}  #2 \end{bmatrix}}
    \else\ifx 2#1
        {\begin{pmatrix}  #2 \end{pmatrix}}
    \fi\fi\fi
}

\begin{document}
% everything as expected here:
\begin{equation}
    \Mtrx[2]{A & B \\ C & D} = \Mtrx[1]{c\\d}
\end{equation}

% The following align-equation gives an error: NOT ANYMORE
\begin{align}
    \Mtrx[2]{A & B \\ C & D} &= 0
\end{align}

在此处输入图片描述

相关内容