tabularx 垂直间距问题

tabularx 垂直间距问题

我对处理水平线之间的垂直间距和单元格内容/背景颜色的方式有问题tabularx(或者是它?)。booktabs

梅威瑟:

\documentclass[paper=a4,fontsize=12pt]{scrartcl}

\usepackage[usenames,svgnames,table]{xcolor}
\usepackage{booktabs}
\usepackage{tabularx}

\renewcommand{\arraystretch}{1.2}
\newcolumntype{Z}{>{\raggedleft\arraybackslash}X}

\begin{document}

\begin{table}[h!]
    \caption{This table has a layout problem.}
    \centering
    \scriptsize
    \begin{tabularx}{\textwidth}{p{2.5cm}ZZZZZ}
        \toprule
        & \multicolumn{5}{l}{\textbf{Heading Top}} \\
        \cline{2-6}
        \textbf{Heading Left} & Heading Sub 1 & Heading Sub 2 & Heading Sub 3 & Heading Sub 4 & Total \\
        \midrule
        \rowcolor{gray!10}Amount & 10 & 10 & 10 & 10 & 40 \\
        \rowcolor{gray!10}\% in Total & 25,00\,\% & 25,00\,\% & 25,00\,\% & 25,00\,\% & 100,00\,\% \\
        \bottomrule
    \end{tabularx}
\end{table}

\end{document}

输出: 在此处输入图片描述

我想要:

  1. \toprule\midrule和之间有相等的垂直间距\cline
  2. \rowcolor背景颜色( )和水平线之间没有间距。

我已经在网上查找了大量关于如何调整垂直间距的建议,但没有成功,特别是似乎没有人遇到这个特殊的问题。

答案1

问题来自于 带来的优势之一booktabs:它在规则(\aboverulesep\belowrulesep)周围引入了一些垂直填充。因此,我将它们设置为,0pt并用包定义的单元格顶部和底部的最小垂直填充替换它们cellspace。这适用于l,r, c以字母为前缀的标准列类型S(或C如果您使用siunitx)。我将最后一列类型更改为Sl,并使用包使其与第一列的宽度相同eqparbox

\documentclass[paper=a4,fontsize=12pt]{scrartcl}

\usepackage[svgnames,table]{xcolor}
\usepackage{booktabs}
\usepackage{tabularx}
\renewcommand{\arraystretch}{1.2}
\newcolumntype{Z}{>{\raggedleft\arraybackslash}X}
\setlength\aboverulesep{0pt}
\setlength\belowrulesep{0pt}
\usepackage{eqparbox} \usepackage{cellspace}
\setlength\cellspacetoplimit{5pt}
\setlength\cellspacebottomlimit{5pt}

\begin{document}

\begin{table}[h!]
    \caption{This table has a layout problem.}
    \centering
    \scriptsize
    \begin{tabularx}{\textwidth}{Sl *{4}{Z}Sr}
        \toprule
        & \multicolumn{5}{Sl}{\textbf{Heading Top}} \\
        \cmidrule(l){2-6}
        \eqmakebox[H][l]{\textbf{Heading Left}} & Heading Sub 1 & Heading Sub 2 & Heading Sub 3 & Heading Sub 4 & \eqmakebox[H][r]{Total} \\
         \midrule%
        \rowcolor{gray!10}Amount & 10 & 10 & 10 & 10 & 40 \\
        \rowcolor{gray!10}\% in Total & 25,00\,\% & 25,00\,\% & 25,00\,\% & 25,00\,\% & 100,00\,\% \\
        \bottomrule
    \end{tabularx}

\end{table}
\end{document} 

在此处输入图片描述

相关内容