![Por que \rowcolors corta o delimitador de matriz?](https://rvso.com/image/328475/Por%20que%20%5Crowcolors%20corta%20o%20delimitador%20de%20matriz%3F.png)
Quero compor um tabular com cores de linha alternadas, contendo matrizes. De alguma forma, ao adicionar \rowcolors{1}{}{black!5}
o colchete esquerdo de algumas matrizes é simplesmente omitido. O que estou fazendo de errado e como posso evitar isso?
\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}
Responder1
Veja o que acontece: bmatrix
compõe o delimitador esquerdo e depois o corpo da matriz, com um retrocesso entre eles; agora, o corpoéuma matriz, portanto, herda a cor de fundo atual com a qual cada célula é impressa,incluindo o preenchimentonormalmente feito por colortbl
.
O retrocesso é a causa do desaparecimento do delimitador esquerdo, pois ele é coberto pela nova camada. Ah, as alegrias das cores no TeX! ;-)
O problema torna-se aparente se pmatrix
for usado em vez disso: podemos ver claramente que apenas parte do parêntese está sobreposta.
Como remediar? Defina um colorbmatrix
ambiente que reimprima o delimitador ausente.
\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}
Na linha com fundo branco, o delimitador esquerdo (visível) também será impresso sobreposto, mas estou confiante na precisão do TeX.
O melhor seria evitar totalmente o fundo colorido nas tabelas. Mas é apenas minha opinião pessoal.
Responder2
Com o ambiente {NiceTabular}
de nicematrix
, você tem diretamente a saída esperada.
\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}
Você precisa de várias compilações (porque nicematrix
usa nós PGF/Tikz nos bastidores).