为什么在 tabularx 中忽略了 \rowcolors 的起始行?

为什么在 tabularx 中忽略了 \rowcolors 的起始行?

似乎\rowcolors用于 时{tabularx}不能正常工作:要着色的第一行的具体编号将被忽略。对于普通 来说情况并非如此{tabular}

在此处输入图片描述

在这两个表中,着色都应从第三行开始。

\documentclass{article}

\usepackage{tabularx}
\usepackage[table]{xcolor}

\begin{document}

\begin{minipage}{0.45\textwidth}
   \verb|{tabularx}| \\[2ex]
   \rowcolors{3}{blue!50}{yellow!60}
   \begin{tabularx}{40mm}{X}
      1 \\ 2 \\ 3 \\ 4 \\ 5 \\ 6 \\
   \end{tabularx}
\end{minipage}\hfill
\begin{minipage}{0.45\textwidth}
   \verb|{tabular}| \\[2ex]
   \rowcolors{3}{blue!50}{yellow!60}
   \begin{tabular}{p{40mm}}
      1 \\ 2 \\ 3 \\ 4 \\ 5 \\ 6 \\
   \end{tabular}
\end{minipage}

\end{document}

xcolor这是/中的一个错误吗tabularx


这个问题是我在带有不需要的黑色背景的表格单元格

答案1

显然tabularx没有错误,这是一个有记录的功能。

在此处输入图片描述

TX多次设置表,并恢复 latex 计数器,但 tex 原始计数器无法如此轻松地恢复。这定义了一个 latex 计数器来隐藏\newcount由 定义的分配计数器xcolor

\documentclass{article}

\usepackage{tabularx}
\usepackage[table]{xcolor}
\newcounter{tblerows}
\expandafter\let\csname c@tblerows\endcsname\rownum


\begin{document}

\begin{minipage}{0.45\textwidth}
   \verb|{tabularx}| \\[2ex]
   \rowcolors{3}{blue!50}{yellow!60}
   \begin{tabularx}{40mm}{X}
      1 \\ 2 \\ 3 \\ 4 \\ 5 \\ 6 \\
   \end{tabularx}
\end{minipage}\hfill
\begin{minipage}{0.45\textwidth}
   \verb|{tabular}| \\[2ex]
   \rowcolors{3}{blue!50}{yellow!60}
   \begin{tabular}{p{40mm}}
      1 \\ 2 \\ 3 \\ 4 \\ 5 \\ 6 \\
   \end{tabular}
\end{minipage}

\end{document}

答案2

供参考,使用和{NiceTabular}(及其在 中可用的内置命令),您可以直接获得预期的结果。{NiceTabularX}nicematrix\rowcolors\CodeBefore

\documentclass{article}
\usepackage{nicematrix}
\usepackage{xcolor}

\begin{document}

\begin{minipage}{0.45\textwidth}
   \verb|{NiceTabularX}| \\[2ex]
   \begin{NiceTabularX}{40mm}{X}
   \CodeBefore
      \rowcolors{3}{blue!50}{yellow!60}
   \Body
      1 \\ 2 \\ 3 \\ 4 \\ 5 \\ 6 \\
   \end{NiceTabularX}
\end{minipage}\hfill
\begin{minipage}{0.45\textwidth}
   \verb|{NiceTabular}| \\[2ex]
   \begin{NiceTabular}{p{40mm}}
   \CodeBefore
      \rowcolors{3}{blue!50}{yellow!60}
   \Body
      1 \\ 2 \\ 3 \\ 4 \\ 5 \\ 6 \\
   \end{NiceTabular}
\end{minipage}

\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

相关内容