我正在尝试使用类似以下代码创建一个彩色表:
\documentclass[a4paper,twoside]{book}
\usepackage{amsmath}
\usepackage{color}
\usepackage{tabularx}
\usepackage{colortbl}
\pagestyle{empty}
\definecolor{lightblue}{cmyk}{0.5,0,0,0}
\definecolor{lightgrey}{cmyk}{0.25,0,0.25,0}
\begin{document}
\begin{tabularx}{\textwidth}{|X|X|}
\hline
\rowcolor{lightblue}
Item 1 & Item 2 \\
\rowcolor{lightgrey}
$$A=\left(\begin{smallmatrix}0&0&0\\0&0&0\end{smallmatrix}\right)$$ &
$$B=\left(\begin{smallmatrix}1&1&1\\1&1&1\end{smallmatrix}\right)$$ \\
\hline
\end{tabularx}
\end{document}
但第二行的第一个单元格完全是黑色的!为什么?我试图更改smallmatrix
为matrix
,但单元格显示一个小黑框。我什么都不明白!
答案1
看起来行颜色被 中的行尾 ( \\
)错误地重置了smallmatrix
(\everycr
全局重置行颜色)。您可以使用类似下面的代码来保存和恢复 周围的行颜色smallmatrix
。这值得向colortbl
和的作者报告amsmath
。
\documentclass[a4paper,twoside]{book}
\usepackage{amsmath}
\usepackage{color}
\usepackage{tabularx}
\usepackage{colortbl}
\pagestyle{empty}
\definecolor{lightblue}{cmyk}{0.5,0,0,0}
\definecolor{lightgrey}{cmyk}{0.25,0,0.25,0}
\makeatletter
\newenvironment{mysmallmatrix}{%
\let\saved@CT@row@color\CT@row@color
\begin{smallmatrix}%
}{%
\end{smallmatrix}%
\global\let\CT@row@color\saved@CT@row@color
}
\makeatother
\begin{document}
\begin{tabularx}{\textwidth}{|X|X|}
\hline
\rowcolor{lightblue}
Item 1 & Item 2 \\
\rowcolor{lightgrey}
$\displaystyle A=\left(\begin{mysmallmatrix}0&0&0\\0&0&0\end{mysmallmatrix}\right)$ &
$\displaystyle B=\left(\begin{mysmallmatrix}1&1&1\\1&1&1\end{mysmallmatrix}\right)$ \\
\hline
\end{tabularx}
\end{document}