我有一张表格,其中第一行包含一个多行单元格。该多行单元格应为灰色。
问题 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
选项加载)。table
xcolor
\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
字母替换S
为C
):
\setlength{\cellspacetoplimit}{4pt}
\setlength{\cellspacebottomlimit}{4pt}
\centering
\begin{tabular}{|c|Sc|Sc|}