![Warum schneidet \rowcolors das Matrixtrennzeichen ab?](https://rvso.com/image/328475/Warum%20schneidet%20%5Crowcolors%20das%20Matrixtrennzeichen%20ab%3F.png)
Ich möchte eine Tabelle mit wechselnden Zeilenfarben setzen, die Matrizen enthält. Beim Hinzufügen \rowcolors{1}{}{black!5}
wird bei manchen Matrizen die linke Klammer einfach weggelassen. Was mache ich falsch und wie kann ich das vermeiden?
\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}
Antwort1
Folgendes passiert: bmatrix
setzt das linke Trennzeichen, dann den Hauptteil der Matrix, mit einer Rücktaste dazwischen; jetzt wird der HauptteilIstein Array, das die aktuelle Hintergrundfarbe übernimmt, mit der jede Zelle gedruckt wird,inklusive Polsterungnormalerweise erledigt durch colortbl
.
Das Backspacing ist die Ursache für das Verschwinden des linken Trennzeichens, da es von der neuen Ebene überdeckt wird. Ach, wie schön ist die Farbe in TeX! ;-)
Das Problem wird deutlich, wenn pmatrix
stattdessen verwendet wird: Wir können deutlich sehen, dass nur ein Teil der Klammer überdruckt wird.
Was kann man dagegen tun? Definieren Sie eine colorbmatrix
Umgebung, die das fehlende Trennzeichen erneut ausgibt.
\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}
In der Zeile mit dem weißen Hintergrund wird das (sichtbare) linke Trennzeichen ebenfalls überdruckt, aber ich vertraue auf die Genauigkeit von TeX.
Am besten wäre es, farbige Hintergründe in Tabellen ganz zu vermeiden. Aber das ist nur meine persönliche Meinung.
Antwort2
Mit der Umgebung {NiceTabular}
von nicematrix
erhalten Sie direkt die erwartete Ausgabe.
\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}
Sie benötigen mehrere Kompilierungen (da nicematrix
im Hintergrund PGF/Tikz-Knoten verwendet werden).