我对处理水平线之间的垂直间距和单元格内容/背景颜色的方式有问题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}
我想要:
\toprule
、\midrule
和之间有相等的垂直间距\cline
。\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}