colortbl 和 amsmath 冲突

colortbl 和 amsmath 冲突

colortbl我对和有疑问amsmath。有人知道这两个包之间存在冲突吗?

\documentclass[10pt]{article}
\usepackage{amsmath}
%\usepackage{colortbl}

\begin{document}

  \begin{tabular}[b]{cc}
    Correct & Incorrect\\
    \parbox[b][]{0.4\linewidth}{
    \begin{align*}
      3(2x-5)^2&=3(4x^2-20x+25)\\
               &=12x^2-60x+75
    \end{align*}
    } &
        \parbox[b][]{0.5\linewidth}{
        \begin{align*}
          3(2x-5)^2&=(6x-15)^2\\
                   &=36x^2-180x+225
        \end{align*}
        }\\
\end{tabular}

\end{document}

编译正常,但是当我取消注释时,\usepackage{colortbl}它会引发错误。

这是错误日志。

! Misplaced \omit.
\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit 
                                                  \kern -\alignsep@ \iftag@ ...
l.14 }
       &
I expect to see \omit only after tab marks or the \cr of
an alignment. Proceed, and I'll ignore this case.

! Misplaced \omit.
\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit 
                                                  \kern -\alignsep@ \iftag@ ...
l.14 }
       &
I expect to see \omit only after tab marks or the \cr of
an alignment. Proceed, and I'll ignore this case.

我必须提到,这个问题似乎只有当我在表align内使用时才会出现。parbox

答案1

这有点像在黑暗中摸索,因为我无法通过追踪找到任何重要的东西,但这些对齐构造非常脆弱,我实在无法理解。

通过仔细研究colortbl代码,我编写了以下补丁。请尝试修改后的 MWE:

\documentclass[10pt]{article}
\usepackage{amsmath}
\usepackage{colortbl}

%%%%%%%%%% HERE COMES THE PATCH %%%%%%%%%%
\usepackage{etoolbox}

\makeatletter
\pretocmd\start@align
{%
  \let\everycr\CT@everycr
  \CT@start
}{}{}
\apptocmd{\endalign}{\CT@end}{}{}
\makeatother
%%%%%%%%%% END PATCH %%%%%%%%%%

\begin{document}

  \begin{tabular}[b]{cc}
    Correct & Incorrect\\
    \parbox[b][]{0.4\linewidth}{
    \begin{align*}
      3(2x-5)^2&=3(4x^2-20x+25)\\
               &=12x^2-60x+75
    \end{align*}
    } &
        \parbox[b][]{0.5\linewidth}{
        \begin{align*}
          3(2x-5)^2&=(6x-15)^2\\
                   &=36x^2-180x+225
        \end{align*}
        }\\
\end{tabular}

\end{document}

不过,我不知道这是否会对colortbl外部表格产生不利影响。请测试。

答案2

我不确定问题的实际根源是什么,但解决此问题的一种方法是使用aligned

在此处输入图片描述

笔记:

  • 正如 egreg 指出的那样,\parbox使用环境时不再需要使用 a aligned
  • =当情况不相等时,我不建议使用,因为不正确的列就是这种情况。我在这里没有做那个更改,因为您需要决定如何处理以下相等。

代码:

\documentclass[10pt]{article}
\usepackage{colortbl}
\usepackage{amsmath}

\begin{document}
\begin{center}
\begin{tabular}[b]{cc}
Correct & Incorrect\\
$\begin{aligned}
3(2x-5)^2&=3(4x^2-20x+25)\\
&=12x^2-60x+75
\end{aligned}$
 &
$\begin{aligned}
3(2x-5)^2&=(6x-15)^2\\
&=36x^2-180x+225
\end{aligned}$
\\
\end{tabular}
\end{center}
\end{document}

相关内容