所有 tabularx 中的交替行颜色

所有 tabularx 中的交替行颜色

我想给每个 tabularx 中的每一行交替着色。

我知道我可以通过在序言中使用以下代码来获得所有正常表格的这一点:

\usepackage[table]{xcolor}
\definecolor{lightgray}{gray}{0.9}
\let\oldtabular\tabular
\let\endoldtabular\endtabular
\renewenvironment{tabular}{\rowcolors{1}{}{lightgray}\oldtabular}{\endoldtabular}

我知道对于单个 tabularx,我可能会使用

\rowcolors{1}{}{lightgray}
\begin{tabularx}{...}

现在我不知道如何将这些组合成序言中的代码,以实现与第一个代码块相同的功能,仅适用于 tabularx。

谢谢!

答案1

为了使这个工作顺利进行,您需要知道一个棘手的部分:内部宏\tabularx需要一个参数,但\tabular不需要。

这是一个可能的方法

\documentclass{article}

\usepackage{tabularx}
\usepackage[table]{xcolor}
\definecolor{lightgray}{gray}{0.9}

\let\oldtabularx\tabularx
\renewcommand*{\tabularx}{\rowcolors{1}{}{lightgray}\oldtabularx}

\begin{document}

\begin{tabularx}{.5\linewidth}{lX}
foo & text text text text text text text \\
bar & text text text text text text text \\
baz & text text text text text text text \\
bla & text text text text text text text
\end{tabularx}

\end{document}

在此处输入图片描述

现在忘掉这个:atabularx可能隐藏在您意想不到的某个包中。相反,定义一个新的环境

\newenvironment{ctabularx}[1]{% or whatever name you like
   \rowcolors{1}{}{lightgray}%
   \tabularx{#1}%
  }{%
   \endtabularx
}

相关内容