Warum schneidet \rowcolors das Matrixtrennzeichen ab?

Warum schneidet \rowcolors das Matrixtrennzeichen ab?

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? farbiger Tisch

\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: bmatrixsetzt 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 pmatrixstattdessen verwendet wird: Wir können deutlich sehen, dass nur ein Teil der Klammer überdruckt wird.

Bildbeschreibung hier eingeben

Was kann man dagegen tun? Definieren Sie eine colorbmatrixUmgebung, 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}

Bildbeschreibung hier eingeben

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 nicematrixerhalten 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 nicematrixim Hintergrund PGF/Tikz-Knoten verwendet werden).

Ausgabe des obigen Codes

verwandte Informationen