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 などのオプションはp考慮warrayXませ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\multirowxcolor[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

デビッドによる解決策

ネストされた表形式を使用する

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

関連情報