我尝试将表格的第 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 的列,因为该命令是在第二列的单元格中发出的。
输出是一样的。