我有一张表格,其中我只想在定义的多列上显示一条水平线。我从 stackExchange 中查看了一些想法,例如:如何在禁忌中在水平线下方和上方添加更多空间?使用 cline 或这里提到的那个:在长表中的多列字段中添加一条水平线但是,在我的情况下,水平线没有出现,我不知道为什么。我还尝试了此处提到的 \cmidrule{} 关键字添加限制水平线的表格但这里我遇到的问题是线稍微向顶部移动了一点,如下图所示。
附上一个小测试代码。任何关于正确移动水平线的建议都很好。或者如果有人有其他建议来实现这一点。提前谢谢。问候 Tobi
\documentclass[a4paper, 11pt, ngerman]{scrreprt}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{colortbl}
\usepackage{hhline}
\usepackage{xcolor}
\begin{document}
\def\arraystretch{1.15}
\begin{table}[b]
\tiny
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
\cmidrule{6-9}
\multicolumn{5}{c|}{} &
\multicolumn{2}{c|}{\cellcolor{gray!10}Annahme Kugel} &
\multicolumn{2}{c|}{\cellcolor{gray!10}Annahme Platte}
\\\hline
\cellcolor{gray!10}ID &
\cellcolor{gray!10}Breite &
\cellcolor{gray!10}Länge &
\cellcolor{gray!10}Breite&
\cellcolor{gray!10}Länge &
\cellcolor{gray!10}Volumen&
\cellcolor{gray!10}Radius (Äquiv)&
\cellcolor{gray!10}Volumen&
\cellcolor{gray!10}Radius (Äquiv)
\\
\cellcolor{gray!10}[-] &
\cellcolor{gray!10}[px] &
\cellcolor{gray!10}[px] &
\cellcolor{gray!10}[$\mu$m] &
\cellcolor{gray!10}[$\mu$m] &
\cellcolor{gray!10}[m$^{3}$] &
\cellcolor{gray!10}[m] &
\cellcolor{gray!10}[m$^{3}$] &
\cellcolor{gray!10}[m]
\\\hhline{|=|=|=|=|=|=|=|=|=|}
1 & 22.0 & 427.6 & 2.03704E-06 & 3.95926E-05 & 1.29033E-16 & 3.13476E-06 & 3.19321E-15 & 9.13509E-06 \\
\end{tabular}
\end{table}
\end{document}
答案1
这是彩色表格中的经典问题\cline
。 中的规则booktabs
没有这个问题,但它们在规则的上方和下方添加了未着色的填充,因此在彩色行的顶部和底部会出现白色条纹。
最简单的解决方案是使用\hhline
和makecell
在以字母为前缀的说明符的列的单元格顶部和底部添加垂直填充S
(或C
如果siunitx
已加载)。要获得此填充,可以定义最小单元格与上方和下方单元格之间的垂直距离。
因此,这是一个可能的代码,我在其中进行了注释,\tableSettings
因为我不知道它是如何定义的。使用 的值\tabcolsep
,我可以使用\footnotesize
代替\tiny
,这实际上是不可读的。
\documentclass[a4paper, 11pt, ngerman]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{multirow}
\usepackage[showframe]{geometry}
\usepackage[table]{xcolor}
\usepackage{booktabs, hhline}
\usepackage{cellspace}
\setlength\cellspacetoplimit{3pt}
\setlength\cellspacebottomlimit{3pt}
\usepackage{siunitx}
\begin{document}
\begin{table}[b]
\setlength{\tabcolsep}{2.9pt}
\footnotesize
\centering
\begin{tabular}{|*{9}{Cc|}}
\hhline{~~~~~|----|}
\multicolumn{5}{c|}{} &
\multicolumn{2}{Cc|}{\cellcolor{gray!10}Annahme Kugel} &
\multicolumn{2}{Cc|}{\cellcolor{gray!10}Annahme Platte}
\\\hline
\rowcolor{gray!10}
ID & Breite & Länge & {Breite} & {Länge} & {Volumen} & {Radius} & {Volumen} & {Radius}
\\[-1.2ex]
\rowcolor{gray!10}
{[-]} & {[px]} & {[px]} & {[\si{\um}]} & {[\si{\um}]} & {[\si{\cubic\m}]} & {(Äquiv) [m]} & {[\si{\cubic\m}]} & { (Äquiv) [m]}
\\\hhline{|=:=:=:=:=:=:=:=:=|}
1 & 22.0 & 427.6 & 2.03704\,E-06 & 3.95926\,E-05 & 1.29033\,E-16 & 3.13476\,E-06 & 3.19321\,E-15 & 9.13509\,E-06 \\
\end{tabular}
\end{table}
\end{document}
答案2
您可以使用 轻松构建该表{NiceTabular}
。nicematrix
在该环境中,您有一个键corners
来指定一些空角,并且规则不会绘制在那些空角中(如果您使用而不是\Hline
提供的)。nicematrix
\hline
此外,您将在 PDF 查看器中获得完美的输出(在某些缩放级别下,某些规则似乎不会消失在彩色面板下)。
\documentclass[a4paper, 11pt, ngerman]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage{geometry}
\usepackage{xcolor}
\usepackage{siunitx}
\usepackage{nicematrix}
\begin{document}
\begin{table}[b]
\setlength{\tabcolsep}{2.9pt}
\footnotesize
\centering
\begin{NiceTabular}{*{9}{c}}[corners=NW,vlines,colortbl-like,cell-space-limits=3pt]
\Hline
&&&&&\rowcolor{gray!10}\Block{1-2}{Annahme Kugel} && \Block{1-2}{Annahme Platte} \\
\Hline
\rowcolor{gray!10}%
ID & Breite & Länge & {Breite} & {Länge} & {Volumen} & {Radius} & {Volumen} & {Radius} \\[-1ex]
\rowcolor{gray!10}%
[-] & [px] & [px] & [\si\um] & [\si\um] & [\si{\cubic\m}] & (Äquiv) [m] & [\si{\cubic\m}] & (Äquiv) [m] \\
\Hline\Hline
1 & 22.0 & 427.6 & 2.03704\,E-06 & 3.95926\,E-05 & 1.29033\,E-16 & 3.13476\,E-06 & 3.19321\,E-15 & 9.13509\,E-06 \\
\end{NiceTabular}
\end{table}
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。