增加表格线与文本之间的边距

增加表格线与文本之间的边距

在此处输入图片描述

在下表中,我试图增加年份下方两行(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代替通用的\hlines,省去了\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

使用booktabssiunitx用于数字表。

\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列中的输出分隔符,则可以将其设置为千位分隔符(但空格越小越好)。

在此处输入图片描述

相关内容