如何消除表格中单元格之间的细线?

如何消除表格中单元格之间的细线?

我正在尝试制作一个表格,其中第一列和第一行是彩色的,但其余单元格是白色的。虽然它几乎按预期工作,但一些应该合并的单元格之间有一条细白线,我希望得到帮助来移除它们。

这是我目前拥有的代码:

\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键加载),它给出了良好的输出。tablexcolor

\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 复制)。

上述输出

相关内容