![¿Por qué \rowcolors corta el delimitador de matriz?](https://rvso.com/image/328475/%C2%BFPor%20qu%C3%A9%20%5Crowcolors%20corta%20el%20delimitador%20de%20matriz%3F.png)
Quiero componer una tabla con colores de fila alternos, que contenga matrices. De alguna manera, cuando se agrega \rowcolors{1}{}{black!5}
el corchete izquierdo de algunas matrices, simplemente se omite. ¿Qué estoy haciendo mal y cómo puedo evitarlo?
\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}
Respuesta1
Esto es lo que sucede: bmatrix
escribe el delimitador izquierdo, luego el cuerpo de la matriz, con un espacio de retroceso en el medio; ahora el cuerpoesuna matriz, por lo que hereda el color de fondo actual con el que se imprime cada celda,incluyendo el rellenonormalmente hecho por colortbl
.
El retroceso es la causa de la desaparición del delimitador izquierdo, porque queda cubierto por la nueva capa. ¡Ah, los placeres del color en TeX! ;-)
El problema se vuelve evidente si pmatrix
se usa en su lugar: podemos ver claramente que solo se sobreimprime parte del paréntesis.
¿Cómo remediar? Defina un colorbmatrix
entorno que reimprima el delimitador que falta.
\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}
En la fila con fondo blanco, el delimitador izquierdo (visible) también se sobreimprimirá, pero confío en la precisión de TeX.
Lo mejor sería evitar por completo el fondo de color en las tablas. Pero es sólo mi opinión personal.
Respuesta2
Con el entorno {NiceTabular}
de nicematrix
, tiene directamente el resultado esperado.
\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}
Necesita varias compilaciones (porque nicematrix
utiliza nodos PGF/Tikz bajo el capó).