仅在多列上方显示水平线

仅在多列上方显示水平线

我有一张表格,其中我只想在定义的多列上显示一条水平线。我从 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没有这个问题,但它们在规则的上方和下方添加了未着色的填充,因此在彩色行的顶部和底部会出现白色条纹。

最简单的解决方案是使用\hhlinemakecell在以字母为前缀的说明符的列的单元格顶部和底部添加垂直填充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 节点)。

上述代码的输出

相关内容