对表格的整行进行着色*

对表格的整行进行着色*

我希望所有表格的第一行都用某种颜色(如下yellow)着色,但不知何故下面的事情并没有按预期工作

这:

\documentclass[a4paper, 12pt]{report}
\usepackage{colortbl}

\begin{document}

\begin{tabular*}{0.90\textwidth}{@{\extracolsep{\fill}}ll}
\rowcolor{yellow}
OS & Features \\ \hline
iOS & blah blah.\\
Android & blah blah.\\
\end{tabular*}

\end{document}

结果是:

在此处输入图片描述

OS这是不理想的,因为和之间有空白。Features 另外,我想使hline稍微宽一点,以便与黄色区域的宽度相匹配,或者使黄色区域稍微窄一点,以便与水平线相匹配。我该怎么做?

非常感谢您的帮助。

答案1

使用包tabularx来代替,这是比 star 版本更好的选择tabular

\documentclass[12pt]{report}
\usepackage{tabularx,colortbl}

\begin{document}

\begin{tabularx}{0.90\textwidth}{Xl}
\rowcolor{yellow}
OS      & Features \\ \hline
iOS     & blah blah.\\
Android & blah blah.\\
\end{tabularx}

\end{document}

在此处输入图片描述

答案2

我不知道如何修补\rowcolor(及其子项),但我提供了一个新的\Rowcolor[<pad>]{<color>}宏:

  • <color>代表使用的颜色,
  • <pad>对于第一列之前的填充(通常,即默认值)这是第一行之前\tabcolsep内容的宽度。@{dded}

关于后一句话的注释:您指定@{\extracolsep{\fill}}ll删除了\tabcolsep第一列之前的。原始版本\rowcolor无法处理这种情况,请看您的图片,这就是您要求将规则加长的原因,而您实际上已经说过,它应该更短!(关于此内容的更多信息:colortbl:\rowcolor 在表格中使用 \begin{tabular}{@{}ccc@{}}

如果您使用类似的东西@{}<…>,您需要使用\Rowcolor[]{<color>}(与相同\Rowcolor[0pt]{<color>})。

代码

\documentclass[a4paper, 12pt]{report}
\usepackage{colortbl}
\usepackage{etoolbox}
\makeatletter
\newlength{\qrr@dimen@}
\expandafter\pretocmd\csname tabular*\endcsname{\setlength{\qrr@dimen@}{#1}}{}{}
\newcommand*{\Rowcolor}[2][\tabcolsep]{%
    \ifx\relax#1\relax\else
        \kern-\the\dimexpr#1\relax
    \fi
    \makebox[0pt][l]{%
        \fboxsep=0pt
        \colorbox{#2}{%
            \strut\kern\qrr@dimen@
        }%
    }%
    \ifx\relax#1\relax\else
        \kern\the\dimexpr#1\relax
    \fi
    \ignorespaces
}
\makeatother
\begin{document}
\noindent
\begin{tabular*}{.9\linewidth}{l@{\extracolsep{\fill}}l}
    \rowcolor{yellow} \multicolumn{1}{>{\columncolor{green}[\tabcolsep][\tabskip]}l}{OS} &  Features   \\ \hline
    \Rowcolor{yellow} OS &  Features   \\ \hline
    iOS                  &  blah blah. \\
    Android              &  blah blah. \\
\end{tabular*}
\end{document}

输出

在此处输入图片描述

答案3

您可以使用{NiceTabular*}nicematrix和键colortbl-like来指定行的颜色,语法与 相同colortbl)。您可以直接获得预期的输出。

\documentclass[a4paper, 12pt]{report}
\usepackage{nicematrix}

\begin{document}

\begin{NiceTabular*}{0.90\textwidth}{@{\extracolsep{\fill}}ll}[colortbl-like]
\rowcolor{yellow}
OS & Features \\ \hline
iOS & blah blah.\\
Android & blah blah.\\
\end{NiceTabular*}

\end{document}

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

上述代码的输出

相关内容