\rowcolors가 행렬 구분 기호를 자르는 이유는 무엇입니까?

\rowcolors가 행렬 구분 기호를 자르는 이유는 무엇입니까?

행렬을 포함하고 행 색상이 바뀌는 표 형식을 조판하고 싶습니다. 어떻게 든 일부 행렬의 왼쪽 대괄호를 추가하면 \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 노드를 사용하기 때문에).

위 코드의 출력

관련 정보