![為什麼 \rowcolors 會剪切矩陣分隔符號?](https://rvso.com/image/328475/%E7%82%BA%E4%BB%80%E9%BA%BC%20%5Crowcolors%20%E6%9C%83%E5%89%AA%E5%88%87%E7%9F%A9%E9%99%A3%E5%88%86%E9%9A%94%E7%AC%A6%E8%99%9F%EF%BC%9F.png)
我想排版具有交替行顏色的表格,其中包含矩陣。不知何故,在添加\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 節點)。