删除绘制的多行表格中的白线

删除绘制的多行表格中的白线

我有一张表格,其中第一行包含一个多行单元格。该多行单元格应为灰色。

问题 1

不幸的是,多行之间出现了一条细细的白线(见最后的图片)。代码如下:

\begin{table}[H]
\renewcommand{\arraystretch}{1.5}
\rowcolors{2}{white}{gray!25}
\begin{center}
\begin{tabular}{ | c | c | c | }
 \arrayrulecolor{black} %changes color of hline
 \hline
 \rowcolor{gray!50} & {Max Power} & {Typ. Range}\\
 \rowcolor{gray!50}\multirow{-2}{*}{\textbf{Class}} & (mW)  &  (m) \\
 \hline
 \textbf{1} &  100 & 100\\
 \textbf{2} & 2.5 & 10\\
 \textbf{3} & 1 & 1\\
 \textbf{4} & 0.5 & 0.5\\
 \hline
\end{tabular}
\caption{Σύγκριση μεταξύ 2.4GHz και 5GHz}
\end{center}
\end{table}

问题2

此外,我想调整红色箭头指示的间距。我希望它更小一些,这样文本就更靠近上面的行,仅适用于这一行。

在此处输入图片描述

答案1

\thead使用包中定义的命令中的列标题makecell

\documentclass{article}

\usepackage[table]{xcolor}
\usepackage{array, makecell, multirow}
\renewcommand\theadfont{\normalsize\bfseries}

\usepackage{siunitx}


\begin{document}
    \begin{table}[ht]
    \renewcommand{\arraystretch}{1.5}
    %\arrayrulecolor{black} %changes color of hline
    \rowcolors{2}{white}{gray!25}
\centering
\begin{tabular}{ | >{\bfseries}c | c | c | }
    \hline
 \rowcolor{gray!50} 
    & \thead{Max Power\\ (mW)} & \thead{Typ. Range\\ (m)}\\
    \hline
1 &  100 & 100  \\
2 & 2.5  & 10   \\
3 & 1    & 1    \\
4 & 0.5  & 0.5  \\
    \hline
\end{tabular}
\caption{Text in Greek language \SI{2.4}{GHz} ... \SI{5}{GHz}.}
    \end{table}
\end{document}   

在此处输入图片描述

笔记:请始终提供 MWE,这是重现问题的最小完整文档。它应包含运行示例所需的所有必要包和定义,但仅此而已。

答案2

软件包中nicematrix有处理该问题的工具。使用以下代码,细白线将不会出现(它们出现在一些使用 工具的 PDF 查看器中,该工具由colortbl选项加载)。tablexcolor

\documentclass{article}

\usepackage{nicematrix}

\begin{document}

\begin{table}
\centering
\renewcommand{\arraystretch}{1.5}
\begin{NiceTabular}{>{\bfseries}ccc}[vlines]
\CodeBefore 
   \rowcolors{2}{white}{gray!25}
   \rowcolor{gray!50}{1,2} 
\Body
   \hline
   \Block{2-1}{Class} & Max Power & Typ. Range\\[-3mm]
                      & (mW)      &  (m) \\
   \hline
   1 &  100 & 100\\
   2 & 2.5 & 10\\
   3 & 1 & 1\\
   4 & 0.5 & 0.5\\
   \hline
\end{NiceTabular}
\end{table}

\end{document}

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

上述代码的输出

答案3

我建议使用makecell和 及其同名命令。这样,您就不需要\multirow 并且列标题中的垂直间距会更短。(笔记:由于我的编辑器出了问题,所以我必须翻译标题文字)

\documentclass{article}
\usepackage{caption, float, makecell}
\usepackage[svgnames, table]{xcolor}

\begin{document}

\begin{table}[H]
\renewcommand{\arraystretch}{1.5}
\rowcolors{2}{white}{gray!25}
\begin{center}
\begin{tabular}{ | c | c | c | }
 \arrayrulecolor{black} %changes color of hline
 \hline
 \rowcolor{gray!50}\textbf{Class} & \makecell{Max Power\\ (mW)} & \makecell{Typ. Range\\(m)}\\
 \hline
 \textbf{1} & 100 & 100\\
 \textbf{2} & 2.5 & 10\\
 \textbf{3} & 1 & 1\\
 \textbf{4} & 0.5 & 0.5\\
 \hline
\end{tabular}
\caption{Comparison between 2.4GHz and 5GHz}
\end{center}
\end{table}

\end{document}

在此处输入图片描述 编辑:针对间距问题,建议删除 的修改\arraystretch,加载cellspace包,并在表格代码开头添加这几行(如果还加载,请将siunitx字母替换SC):

\setlength{\cellspacetoplimit}{4pt}
\setlength{\cellspacebottomlimit}{4pt}
\centering
\begin{tabular}{|c|Sc|Sc|}

相关内容