我想排版一个包含矩阵的交替行颜色表格。不知何故,添加时\rowcolors{1}{}{black!5}
某些矩阵的左括号被省略了。我做错了什么,我该如何避免这种情况?
\documentclass[ border=2pt]{standalone}
\usepackage{amsmath}
\usepackage[natural,table]{xcolor}
\begin{document}
\rowcolors{1}{}{black!5}
\begin{tabular}[t]{ll}
\rowcolor{gray!50}{\bfseries SKP} & \\ \hline
$A$ & $\begin{bmatrix}-0.25 & 1 \\ 0 & 0.5 \end{bmatrix}$\\
$b=g$ & $\begin{bmatrix}0 \\ 1\end{bmatrix}$
\end{tabular}
\end{document}
答案1
事情是这样的:bmatrix
排版左分隔符,然后是矩阵主体,中间有一个退格键;现在,主体是一个数组,因此它继承了每个单元格打印的当前背景颜色,包括填充通常由 完成colortbl
。
退格是导致左分隔符消失的原因,因为它被新层覆盖了。啊,TeX 中色彩的乐趣!如果改用,;-)
问题就会变得明显:我们可以清楚地看到,只有部分括号被套印了。pmatrix
如何补救?定义一个colorbmatrix
重新打印缺失分隔符的环境。
\documentclass[border=2pt]{standalone}
\usepackage{amsmath}
\usepackage[natural,table]{xcolor}
\newsavebox{\bmatrixbox}
\newenvironment{colorbmatrix}
{\begin{lrbox}{\bmatrixbox}
\mathsurround=0pt
$\displaystyle
\begin{bmatrix}}
{\end{bmatrix}$%
\end{lrbox}%
\usebox{\bmatrixbox}%
\kern-\wd\bmatrixbox
\makebox[0pt][l]{$\left[\vphantom{\usebox{\bmatrixbox}}\right.$}%
\kern\wd\bmatrixbox
}
\begin{document}
\rowcolors{1}{}{black!5}
\begin{tabular}[t]{ll}
\rowcolor{gray!50}{\bfseries SKP} & \\ \hline
$A$ & $\begin{colorbmatrix}-0.25 & 1 \\ 0 & 0.5 \end{colorbmatrix}$\\
$b=g$ & $\begin{colorbmatrix}0 \\ 1\end{colorbmatrix}$ \\ \hline
$A$ & $\begin{colorbmatrix}-0.25 & 1 \\ 0 & 0.5 \end{colorbmatrix}$\\
\end{tabular}
\end{document}
在具有白色背景的行中,(可见的)左分隔符也将被叠印,但我对 TeX 的准确性很有信心。
最好的办法是完全避免在表格中使用彩色背景。但这只是我的个人观点。
答案2
{NiceTabular}
有了的环境nicematrix
,您就可以直接获得预期的输出。
\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}
\begin{document}
\NiceMatrixOptions{cell-space-limits=2pt}
\begin{NiceTabular}[t]{ll}[colortbl-like]
\CodeBefore
\rowcolors{1}{}{black!5}
\Body
\rowcolor{gray!50}\bfseries SKP & \\ \Hline
$A$ & $\begin{bmatrix}-0.25 & 1 \\ 0 & 0.5 \end{bmatrix}$\\
$b=g$ & $\begin{bmatrix}0 \\ 1\end{bmatrix}$
\end{NiceTabular}
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。