如何在 LyX 中交替行颜色并同时指定列颜色

如何在 LyX 中交替行颜色并同时指定列颜色

我尝试将表格的第 0 列设置为灰色并交替其行颜色,例如:

在此处输入图片描述

我已成功通过在表格前插入 ERT 来使替代行颜色正常工作:

\rowcolors{0}{gray!15}{white}

但是,添加列 LaTeX 参数不起作用:

>{\columncolor{gray!15}}c

单独使用时,两者效果都很好。有什么办法可以让它们同时工作吗?

非常感谢

答案1

发生这种情况的原因是colortbl将行绘制在列之上。

为了解决此问题,请在序言中添加以下几行:

\usepackage{etoolbox}

\makeatletter
\patchcmd{\@classz}
  {\CT@row@color}
  {\oldCT@column@color}
  {}
  {}
\patchcmd{\@classz}
  {\CT@column@color}
  {\CT@row@color}
  {}
  {}
\patchcmd{\@classz}
  {\oldCT@column@color}
  {\CT@column@color}
  {}
  {}
\makeatother

梅威瑟:

\documentclass{article}
\usepackage[table]{xcolor}

\usepackage{etoolbox}

\makeatletter
\patchcmd{\@classz}
  {\CT@row@color}
  {\oldCT@column@color}
  {}
  {}
\patchcmd{\@classz}
  {\CT@column@color}
  {\CT@row@color}
  {}
  {}
\patchcmd{\@classz}
  {\oldCT@column@color}
  {\CT@column@color}
  {}
  {}
\makeatother

\begin{document}

\begin{table}[t]
\rowcolors{0}{gray!15}{white}
\begin{tabular}{|>{\columncolor{gray!15}}c|ccc|}
  \hline
    & a & b & c \\
  \hline
  1 &   &   &   \\
  2 &   &   &   \\
  3 &   &   &   \\
  4 &   &   &   \\
  \hline
\end{tabular}
\end{table}

\end{document} 

输出:

在此处输入图片描述

答案2

环境{NiceTabular}提供nicematrix了所谓的 ,其中\CodeBefore包含用于为行、列和单元格着色的内置命令。\rowcolors中可用的命令\CodeBefore具有一个键cols来限制命令的范围。

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\begin{NiceTabular}{|c|ccc|}
\CodeBefore
  \rowcolor{gray!15}{1}
  \columncolor{gray!15}{1}
  \rowcolors{2}{gray!15}{}[cols=2-]
\Body
\Hline
    & a & b & c \\
\Hline
  1 \\
  2 \\
  3 \\
  4 \\
\Hline
\end{NiceTabular}

\end{document}

所有 PDF 查看器中的输出都将是完美的。

上述代码的输出

使用替代语法可以获得相同的输出,更接近 提供的语法colortbl

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

\begin{NiceTabular}{|>{\columncolor{gray!15}}c|ccc|}[color-inside]
\Hline
\rowcolor{gray!15}
    & a & b & c \\
\Hline
  1 & \rowcolors{}{gray!15} \\
  2 \\
  3 \\
  4 \\
\Hline
\end{NiceTabular}

\end{document}

在该代码中,该命令\rowcolors仅适用于大于 2 的列,因为该命令是在第二列的单元格中发出的。

输出是一样的。

相关内容