eqnarray 和 tabstackengine 之间的冲突

eqnarray 和 tabstackengine 之间的冲突

我似乎遇到了 eqnarray 环境和 tabstackengine 包(对于矩阵、列向量等非常有用)之间的冲突。

\documentclass{report}
\usepackage{tabstackengine}

\begin{document}

\begin{eqnarray*}
  v &=& \bracketMatrixstack{1 & 2 \\ 3 & 3} \bracketVectorstack{-3 \\ 2} \\
  a &=& b 
\end{eqnarray*}

\end{document}

如果我尝试编译这个,我会得到大约一百万个错误!

答案1

eqnarray除了它是一个对齐环境之外,该错误与(无论如何都不应该使用)无关。

问题在于,它tabstackengine无法保护内部&免受可能的外部对齐的影响。

只需支撑矩阵:

\documentclass{report}
\usepackage{amsmath}
\usepackage{tabstackengine}

\begin{document}

\begin{align*}
  v &= {\bracketMatrixstack{1 & 2 \\ 3 & 3}} \bracketVectorstack{-3 \\ 2} \\
  a &= b
\end{align*}

\end{document}

在此处输入图片描述

我不知道这比

\documentclass{report}
\usepackage{amsmath}

\begin{document}

\begin{align*}
  v &= \begin{bmatrix} 1 & 2 \\ 3 & 3 \end{bmatrix} 
       \begin{bmatrix} -3 \\ 2 \end{bmatrix} \\
  a &= b
\end{align*}

\end{document}

在此处输入图片描述

您可以修复tabstackengine

\documentclass{report}
\usepackage{amsmath}
\usepackage{tabstackengine}

\makeatletter
\renewcommand\ensureTABstackMath[1]{%
  {\ifnum`}=\z@\fi
  \let\sv@TABmode\TAB@delim\TABstackMath#1\let\TAB@delim\sv@TABmode
  \ifnum`{=\z@\fi}%
}
\makeatother

\begin{document}

\begin{align*}
  v &= \bracketMatrixstack{1 & 2 \\ 3 & 3} \bracketVectorstack{-3 \\ 2} \\
  v &= \begin{bmatrix} 1 & 2 \\ 3 & 3 \end{bmatrix}
       \begin{bmatrix} -3 \\ 2 \end{bmatrix} \\
  a &= b
\end{align*}

\end{document}

但我仍然看不到任何改善。

在此处输入图片描述

相关内容