colortbl 및 makecell 관련 문제

colortbl 및 makecell 관련 문제

다음은 간단한 예입니다.

\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{colortbl}
\usepackage{multirow, makecell}

\begin{document}
\begin{tabular}{c}
  longer text\\
  \cellcolor{teal}\\
  \cellcolor{teal}\multirowcell{-2}[0ex][r]{short\\short}
%   \cellcolor{teal}\multirow{-2}*{short} % is ok but can't break line or set alignment
\end{tabular}
\end{document}

여기에 이미지 설명을 입력하세요

다중 행 셀의 텍스트가 위 셀의 텍스트보다 짧은 경우 셀 색상이 잘 지정되지 않습니다. multirow괜찮습니다. 하지만 셀 내부의 줄을 끊고 정렬을 설정하고 싶습니다.

코드는 Python에 의해 생성되며 열의 너비는 프로그램에서 액세스할 수 없고 적절한 값으로 설정할 수 없기 때문에 , in 또는 in과 같은 옵션 pw고려 array되지 X않습니다 tabularx.

답변1

사용하면 w{c}{...}열 유형이 간단해집니다.

\documentclass{article}
\usepackage[table]{xcolor}  % it load colortbl
\usepackage{makecell}

\begin{document}
\begin{tabular}{w{c}{5em}}
  longer text       \\
\rowcolor{teal}
\makecell{short\\short}
\end{tabular}
\end{document}

여기에 이미지 설명을 입력하세요

부록: 또한 새 패키지를 사용하면 간단합니다 tabularray.

\documentclass{article}
\usepackage{tabularray}
\usepackage{xcolor}  % with tabularray the colortbl is not needed

\begin{document}
\begin{tblr}{c}
  longer text       \\
  \SetRow{cyan!30}
{short\\short}
\end{tblr}
\end{document}

또는

\documentclass{article}
\usepackage{tabularray}
\usepackage{xcolor}  

\begin{document}
\begin{tblr}{row{2}={cyan!30,c}, c}
  longer text       \\
{short\\short}
\end{tblr}
\end{document}

두 경우 모두 결과는 동일합니다.

여기에 이미지 설명을 입력하세요

답변2

패키지 (≥ 4.0)는 및 nicematrix호환되는 방식으로 셀, 행 및 열을 색칠하는 도구를 제공합니다 .multirowmakecell

\documentclass{article}
\usepackage{xcolor}
\usepackage{multirow, makecell}
\usepackage{nicematrix}

\begin{document}

\begin{NiceTabular}{c}[code-before = \rowcolor{teal!75}{2,3}]
 longer text\\
 \\
 \multirowcell{-2}[0ex][r]{shorter \\ short}
\end{NiceTabular}
\end{document} 

일부 확대/축소 수준에서는 일부 PDF 뷰어에 표시되는 얇은 흰색 선이 없습니다(예: Bernard의 답변 참조).

위 코드의 결과

답변3

Makecell은 테이블의 색상 셀에 문제가 있을 수 있습니다. 해결 방법 \Centerstack으로 stackengine일반 \multirow. 관련 없음: xcolor옵션을 사용하여 로드하면 전자가 자동으로 수행하므로 [table]로드할 필요가 없습니다 .colortbl

\documentclass{article}
\usepackage[table]{xcolor}
\usepackage{multirow, makecell}
\usepackage[usestackEOL]{stackengine}

\begin{document}

\begin{tabular}{c}
  longer text\\
  \cellcolor{teal!75}\\
  \cellcolor{teal!75}\multirowcell{-2}[0ex][r]{shorter \\ short}
% \cellcolor{teal}\multirow{-2}*{short} % is ok but can't break line or set alignment
\end{tabular}
\qquad
\begin{tabular}{c}
  longer text\\
  \cellcolor{teal!75}\\
  \cellcolor{teal!75}\multirow{-2}{*}{\Centerstack[r]{shorter \\ short}}
\end{tabular}

\end{document} 

여기에 이미지 설명을 입력하세요

답변4

David의 솔루션

중첩된 표를 사용하세요

\newcommand{\minitab}[2][l]{\begin{tabular}{@{}#1@{}}#2\end{tabular}}
\cellcolor{teal}\multirow{-2}*{\minitab[r]{short\\short}

관련 정보