我正在尝试制作一个表格,其中第一列和第一行是彩色的,但其余单元格是白色的。虽然它几乎按预期工作,但一些应该合并的单元格之间有一条细白线,我希望得到帮助来移除它们。
这是我目前拥有的代码:
\documentclass[10pt]{iopart}
\usepackage[table]{xcolor}
\usepackage{multirow}
\usepackage{hhline}
\begin{document}
\begin{table*}
\begin{tabular}{p{3cm}p{5.25cm}p{5.25cm}}
\rowcolor{black}
&\multicolumn{1}{c}{\textbf{\color{white}Title A}} & \multicolumn{1}{c}
{\textbf{\color{white}Title B}} \\
\cellcolor{black}\textbf{\color{white}Foo A }
& X
& Y \\ \hhline{~--}
\cellcolor{black} & X & Y\\
\cellcolor{black}& X& Y\\
\multirow{-3}{*}{\cellcolor{black}\color{white}Foo B}& X& Y\\ \hhline{~--}
\cellcolor{black}\textbf{\color{white}Foo C}
& X
& Y\\
\cellcolor{black}
& & Y \\
\cellcolor{black}
& & Y \\
\end{tabular}
\caption{Caption.}
\end{table*}
\end{document}
Foo A(第 2 行)不需要更改。
Foo C(第 6-8 行)我想摆脱连接三行的白色间距。
Foo B(第 3-5 行)是我尝试使用我在此找到的解决方案类似的问题,我认为使用多行可能会有所帮助。除了不删除单元格之间的白线之外,它还会将“Foo B”文本垂直居中,而这并不是我想要的。
理想情况下,我希望结果看起来像这样(但 Foo B 位于其行的顶部):
谢谢!
答案1
包裹tabularray
使用干净的代码制作更好的表格:
\documentclass[10pt]{article}
\usepackage{xcolor}
\usepackage{tabularray}
\begin{document}
\begin{table*}
\begin{tblr}{
colspec = {p{3cm}p{5.25cm}p{5.25cm}},
row{1} = {bg=gray2,fg=white,c},
column{1} = {bg=gray2,fg=white,font=\bfseries},
}
& Title A & Title B \\
Foo A & X & Y \\\hline
\SetCell[r=3]{h} Foo B & X & Y \\
& X & Y \\
& X & Y \\\hline
\SetCell[r=3]{h} Foo C & X & Y \\
& X & Y \\
& X & Y \\\hline
\end{tblr}
\caption{Caption}
\end{table*}
\end{document}
\SetCell
在命令内部,r=3
用于多行,h
为垂直对齐。
答案2
这是一个带有经典包的代码(通过包的colortbl
键加载),它给出了良好的输出。table
xcolor
\documentclass{article}
\usepackage[table]{xcolor}
\begin{document}
\arrayrulecolor{orange}
\begin{table*}
\sffamily
\begin{tabular}{>{\columncolor{black}\color{white}}w{l}{3cm}w{l}{5.25cm}w{l}{5.25cm}}
\rowcolor{black}
& \multicolumn{1}{c}{\color{white}Title A} & \multicolumn{1}{c}{\color{white}Title B} \\
Foo A & X & Y \\ \cline{2-3}
Foo B & X & Y \\
& X & Y \\
& X & Y \\ \cline{2-3}
Foo C & X & Y \\
& & Y \\
& & Y \\
\end{tabular}
\caption{Caption.}
\end{table*}
\end{document}
但是,黑色面板中有一些细白线(这取决于 PDF 查看器:例如PDF.js
,在 Firefox 中使用的 PDF 查看器中,它们通常存在)。
该软件包中nicematrix
有解决该问题的工具。
根据之前的代码,我现在将:
- 加载
nicematrix
(和卸载colortbl
); - 替换
{tabular}
为{NiceTabular}
; - 添加键
color-inside
(别名colortbl-like
:)表示数组本身中有颜色指令(而不是所谓的\CodeBefore
提供的nicematrix
)。
\documentclass{article}
\usepackage{xcolor}
\usepackage{nicematrix}
\begin{document}
\arrayrulecolor{orange}
\begin{table*}
\sffamily
\begin{NiceTabular}{>{\columncolor{black}\color{white}}w{l}{3cm}w{l}{5.25cm}w{l}{5.25cm}}[color-inside]
\rowcolor{black}
& \multicolumn{1}{c}{\color{white}Title A} & \multicolumn{1}{c}{\color{white}Title B} \\
Foo A & X & Y \\ \cline{2-3}
Foo B & X & Y \\
& X & Y \\
& X & Y \\ \cline{2-3}
Foo C & X & Y \\
& & Y \\
& & Y \\
\end{NiceTabular}
\caption{Caption.}
\end{table*}
\end{document}
这是输出(再次从 Firefox 复制)。