因此,我需要制作一个多行彩色表格,并使用部分水平线。我使用了\cline
它,但它不起作用:\cellcolor
-命令会覆盖该行。这个问题告诉我将其更改为\hhline
不会被覆盖\cellcolor
。而是\hhline
覆盖颜色。
为了更清楚起见:
无颜色:
\documentclass{article}
\usepackage{colortbl}
\usepackage{multirow}
\begin{document}
\begin{tabular}{|c|c|}
\hline
\bfseries ColumnOne & \bfseries ColumnTwo\\ \hline
First data & 932\\ \hline
& 239\\ \cline{2-2} % or \hhline{|~|-|}
& 137\\ \cline{2-2} % or \hhline{|~|-|}
\multirow{-3}{*}{More data} & 319\\ \hline
Last data & 132\\ \hline
\end{tabular}
\end{document}
配色:
使用\cline
\documentclass{article}
\usepackage{colortbl}
\usepackage{multirow}
\begin{document}
\begin{tabular}{|>{\columncolor{red}}c|>{\columncolor{blue}}c|}
\hline
\bfseries ColumnOne & \bfseries ColumnTwo\\ \hline
First data & 932\\ \hline
& 239\\ \cline{2-2}
& 137\\ \cline{2-2}
\multirow{-3}{*}{More data} & 319\\ \hline
Last data & 132\\ \hline
\end{tabular}
\end{document}
使右列的线条消失。
使用\hhline
\documentclass{article}
\usepackage{colortbl}
\usepackage{multirow}
\usepackage{hhline}
\begin{document}
\begin{tabular}{|>{\columncolor{red}}c|>{\columncolor{blue}}c|}
\hline
\bfseries ColumnOne & \bfseries ColumnTwo\\ \hline
First data & 932\\ \hline
& 239\\ \hhline{|~|-|}
& 137\\ \hhline{|~|-|}
\multirow{-3}{*}{More data} & 319\\ \hline
Last data & 132\\ \hline
\end{tabular}
\end{document}
在左列创建白线。
有什么可能的方法可以解决这个问题?
答案1
很抱歉这里的界面不太漂亮:但是你可以这样做:
\documentclass{article}
\usepackage{colortbl}
\usepackage{multirow}
\usepackage{hhline}
\begin{document}
\begin{tabular}{|>{\columncolor{red}}c|>{\columncolor{blue}}c|}
\hline
\bfseries ColumnOne & \bfseries ColumnTwo\\ \hline
First data & 932\\ \hline
& 239\\ \hhline{|>{\arrayrulecolor{red}}->{\arrayrulecolor{black}}|-|}
& 137\\ \hhline{|>{\arrayrulecolor{red}}->{\arrayrulecolor{black}}|-|}
\multirow{-3}{*}{More data} & 319\\ \hline
Last data & 132\\ \hline
\end{tabular}
\end{document}
结果:
答案2
tblr
有了新的 LaTeX3 包环境,一切都变得轻而易举tabularray
:multirow、cline 和 cellcolor 可以很好地协同工作,正如预期的那样。您甚至可以在以下代码中将\cline{2}
's 替换为s。\hline
\documentclass{article}
\usepackage{xcolor}
\usepackage{tabularray}
\begin{document}
\begin{tblr}{
colspec = {|Q[c,red7]|Q[c,blue7]|},
cell{3}{1} = {r=3}{m}, % multirow
row{1} = {font=\bfseries},
}
\hline
ColumnOne & ColumnTwo \\
\hline
First data & 932 \\
\hline
More data & 239 \\
\cline{2}
& 137 \\
\cline{2}
& 319 \\
\hline
Last data & 132 \\
\hline
\end{tblr}
\end{document}
答案3
环境{NiceTabular}
是nicematrix
解决该问题的方法。命令\cline
受到尊重。此外,\cline{2}
可以用作的语法快捷方式\cline{2-2}
。
\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{|c|c|}
\CodeBefore
\columncolor{red!15}{1}
\columncolor{blue!15}{2}
\Body
\hline
\RowStyle{\bfseries}
ColumnOne & ColumnTwo \\ \hline
First data & 932 \\ \hline
\Block{3-1}{More data} & 239 \\ \cline{2-2}
& 137 \\ \cline{2}
& 319 \\ \hline
Last data & 132 \\ \hline
\end{NiceTabular}
\end{document}
事实上,在这种情况下,可以简化代码。使用键hvlines
,除了块(由 命令创建)之外,所有水平和垂直规则都将绘制\Block
。nicematrix
这就是我们所需要的。
\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{cc}[hvlines]
\CodeBefore
\columncolor{red!15}{1}
\columncolor{blue!15}{2}
\Body
\RowStyle{\bfseries}
ColumnOne & ColumnTwo \\
First data & 932 \\
\Block{3-1}{More data} & 239 \\
& 137 \\
& 319 \\
Last data & 132 \\
\end{NiceTabular}
\end{document}
答案4
我迟到了。而且,可以肯定的是,这个修复程序很老套,如果不进行一些调整,它就不会提供解决方案。它确实相当干净地解决了我的问题,而且因为我找到了这个讨论,所以我会在这里添加我的答案。
似乎可以cline
通过添加回车符然后删除一些垂直空间来“欺骗”单元格上的颜色填充,使其不覆盖,这样行就会保留在原处,而单元格会稍微向下移动。我不得不在修复后编译您的代码几次,以获得正确的垂直间距 -4.1mm,但如果需要快速修复,它可以避免大量返工。
\documentclass{article}
\usepackage{colortbl}
\usepackage{multirow}
\begin{document}
\begin{tabular}{|>{\columncolor{red}}c|>{\columncolor{blue}}c|}
\hline
\bfseries ColumnOne & \bfseries ColumnTwo\\ \hline
First data & 932\\ \hline
& 239\\ \cline{2-2}\\[-4.1mm]
& 137\\ \cline{2-2}\\[-4.1mm]
\multirow{-3}{*}{More data} & 319\\ \hline
Last data & 132\\ \hline
\end{tabular}
\end{document}
结果: