我想突出显示表格中的一行和一列。列没有问题。但是,如果我在定义@{}
中使用,行中最外侧的左侧和右侧单元格的颜色面板会超出表格的边框tabular
。
\documentclass{scrartcl}
\usepackage{colortbl,booktabs}
\begin{document}
\begin{table}[h]
\setlength{\aboverulesep}{0pt} % align \bottomrule nicely to coloured cell
\setlength{\belowrulesep}{0pt} % align \toprule nicely to coloured cell
\setlength{\extrarowheight}{.75ex} % make up for lost ruleseps
\begin{tabular}{@{}c>{\columncolor[gray]{.9}}cc@{}} \toprule
a & b & c \\
d & e & f \\
\rowcolor[gray]{.9} g & h & i \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
问题很明显:
使用\rowcolor[gray]{.9}[0pt][0pt]
减少悬垂不是一个选择,因为该行将不再完全突出显示。
我迄今为止尝试过
重新定义突出显示的行(如下所示)打印
[0pt]
到单元格中,但不起作用,尽管有人建议这样做这里。\rowcolor[gray]{.9}\cellcolor{white}\cellcolor[gray]{.9}[0pt] g & h & i \\
像这样重新定义突出显示的行也不起作用:
\rowcolor[gray]{.9}[0pt][0pt] g & \cellcolor[gray]{.9} h & i \\
中间的单元格保持突出显示,就像只
\rowcolor[gray]{.9}[0pt][0pt]
定义了一样……
还有其他方法可以修剪彩色面板以使其与\bottomrule
左侧和右侧对齐吗?
答案1
一种方法是固定列宽。我不确定这是不是个很优雅的方法。
\documentclass{scrartcl}
\usepackage{colortbl,booktabs}
\begin{document}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}p{#1}}
\begin{table}[h]
\setlength\tabcolsep{0pt}
\begin{tabular}{C{1em}>{\columncolor[gray]{.9}} C{1em} C{1em}} \toprule
a & b & c \\
d & e & f \\
\rowcolor[gray]{.9} g & h & i \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
\end{document}
答案2
\documentclass{scrartcl}
\usepackage{booktabs}
\usepackage[table]{xcolor}
\colorlet{tablerowcolor}{yellow}%\colorlet{tablerowcolor}{gray!10}
\newcommand*{\ct}[1]{\multicolumn{1}{>{\columncolor{tablerowcolor}}c}{#1}}
\newcommand*{\fct}[1]{\multicolumn{1}{>{\columncolor{tablerowcolor}\hspace*{-\tabcolsep}}c}{#1}}
\newcommand*{\lct}[1]{\multicolumn{1}{>{\columncolor{tablerowcolor}}c<{\hspace*{-\tabcolsep}}}{#1}}
\newcommand*{\cfct}[1]{\multicolumn{1}{>{\columncolor{tablerowcolor}[\dimexpr\tabcolsep-\cmidrulekern\relax][\tabcolsep]\hspace*{-\tabcolsep}}c}{#1}}
\newcommand*{\clct}[1]{\multicolumn{1}{>{\columncolor{tablerowcolor}[\tabcolsep][\dimexpr\tabcolsep-\cmidrulekern\relax]}c<{\hspace*{-\tabcolsep}}}{#1}}
\begin{document}
\begin{table}[h]
\setlength{\aboverulesep}{0pt} % align \bottomrule nicely to coloured cell
\setlength{\belowrulesep}{0pt} % align \toprule nicely to coloured cell
\setlength{\extrarowheight}{.75ex} % make up for lost ruleseps
\begin{tabular}{ @{}r@{} }
\\
reference \\
wrong alignment if overhang \\
fitted to \texttt{\textbackslash midrule} \\
fitted to \texttt{\textbackslash cmidrule(lr)} \\
\end{tabular}
%
\begin{tabular}{ @{}*{3}{c}@{} }
\toprule
test & test & test \\
\midrule
a & b & c \\
\ct a & b & \ct c \\
\midrule
\fct a & b & \lct c \\
\cmidrule(lr){1-3}
\cfct a & b & \clct c \\
\bottomrule
\end{tabular}
\end{table}
\end{document}