在下表中,我试图增加年份下方两行(1881 年和 1907 年)的边距,以便文本(居民....、km2....)不会太靠近行。除非彻底修改表格设计,否则我似乎找不到合适的解决方案。非常感谢任何帮助!
documentclass[12pt]{report}
\usepackage{multirow}
\usepackage{bigstrut}
\makeatletter
\def\hlinewd#1{%
\noalign{\ifnum0=`}\fi\hrule \@height #1 \futurelet
\reserved@a\@xhline}
\makeatother
\begin{document}
\begin{tabular}{lrrrrr}
\hline
& \multicolumn{2}{c}{1881} & & \multicolumn{2}{c}{1907} \bigstrut\\
\cline{2-3}\cline{5-6} \multicolumn{1}{l}{Nation} & \shortstack{Inhabitants\\ per association} & \shortstack{km\textsuperscript{2}\\ per association} & & \shortstack{Inhabitants\\ per association} & \shortstack{km\textsuperscript{2}\\ per association} \bigstrut\\
\hline
\multicolumn{1}{l}{Switzerland} & 21'850 & 348 & & 4'845 & 61 \bigstrut[t]\\
\multicolumn{1}{l}{Germany} & 25'367 & 323 & & 7'960 & 84 \\
\multicolumn{1}{l}{Netherlands} & 76'000 & 660 & & 30'303 & 167 \\
\multicolumn{1}{l}{Belgium} & 81'818 & 446 & & 33'488 & 137 \\
\multicolumn{1}{l}{Sweden} & 173'077 & 17'337 & & 39'901 & 12'879 \\
\multicolumn{1}{l}{France} & 205'555 & 2'980 & & 144'743 & 529 \\
\multicolumn{1}{l}{Italy} & 301'087 & 3'116 & & 296'962 & 2'704 \bigstrut[b]\\
\hline
\end{tabular}%
\end{document}
答案1
一个不需要重新设计表格材料的建议:加载包booktabs
,并用说明替换两个\cline
说明\cmidrule
。
另外,请\multicolumn{1}{l}{...}
从左侧列的单元格中删除“包装器”——它的单元格对齐方式是l
,因此包装器完全是多余的。
下面的代码实现了这些想法,使用\toprule
、\midrule
和\bottomrule
代替通用的\hline
s,省去了\bigstrut
指令,并且还删除了表中多余的空白列。
\documentclass[12pt]{report}
\usepackage{booktabs}
\newcommand\mc[1]{\multicolumn{1}{c}{#1}} % a handy shortcut macro
\begin{document}
\noindent
\begin{tabular}{lrrrr}
\toprule
& \multicolumn{2}{c}{1881} & \multicolumn{2}{c}{1907} \\
\cmidrule(lr){2-3} \cmidrule(l){4-5}
& \mc{Inhabitants} & \mc{km\textsuperscript{2}} & \mc{Inhabitants} & \mc{km\textsuperscript{2}} \\
Nation & \mc{per association} & \mc{per association} & \mc{per association} & \mc{per association} \\
\midrule
Switzerland & 21'850 & 348 & 4'845 & 61 \\
Germany & 25'367 & 323 & 7'960 & 84 \\
Netherlands & 76'000 & 660 & 30'303 & 167 \\
Belgium & 81'818 & 446 & 33'488 & 137 \\
Sweden & 173'077 & 17'337 & 39'901 & 12'879 \\
France & 205'555 & 2'980 & 144'743 & 529 \\
Italy & 301'087 & 3'116 & 296'962 & 2'704 \\
\bottomrule
\end{tabular}
\end{document}
顺便说一句,这个表格太宽,无法放入标准宽度的报告类文本块中。我没有在上面的代码中做任何调整,因为我假设您正在为您的文档适当地设置页面几何形状。
答案2
使用booktabs
和siunitx
用于数字表。
\documentclass[12pt]{report}
\usepackage{booktabs,siunitx,caption}
\begin{document}
\begin{table}
\centering
\caption{A table about inhabitants}\label{tab:inhabitants}
\sisetup{group-four-digits}
\addtolength{\tabcolsep}{-3.2pt}% computed after trying
\begin{tabular}{
@{}
l
S[table-format=6.0]
S[table-format=5.0]
S[table-format=6.0]
S[table-format=5.0]
@{}
}
\toprule
& \multicolumn{2}{c}{1881} & \multicolumn{2}{c}{1907} \\
\cmidrule(lr){2-3} \cmidrule(lr){4-5}
Nation & {Inhabitants} & \si{km^2} & {Inhabitants} & \si{km^2} \\
& {per association} & {per association} & {per association} & {per association} \\
\midrule
Switzerland & 21850 & 348 & 4845 & 61 \\
Germany & 25367 & 323 & 7960 & 84 \\
Netherlands & 76000 & 660 & 30303 & 167 \\
Belgium & 81818 & 446 & 33488 & 137 \\
Sweden & 173077 & 17337 & 39901 & 12879 \\
France & 205555 & 2980 & 144743 & 529 \\
Italy & 301087 & 3116 & 296962 & 2704 \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
在看到溢出量约为 26pt 后,计算出了设置为\tabcolsep
;有八个列间距可以处理
不要'
在输入中将其用作千位分隔符。如果您希望将其设置为S
列中的输出分隔符,则可以将其设置为千位分隔符(但空格越小越好)。