如何控制长 \multicolumn 跨越的哪一列获得额外的空间?

如何控制长 \multicolumn 跨越的哪一列获得额外的空间?

我有一张如下所示的表格:

\documentclass{article}
\usepackage{booktabs}
\usepackage{dcolumn}
\newcolumntype{d}{D{.}{.}{2}}
\begin{document}
\begin{tabular}{l r@{\thinspace}d r@{\thinspace}d r@{\thinspace}d}
  \toprule
  & \multicolumn{2}{c}{Special Programs} & \multicolumn{2}{c}{Equipment Maintenance} & \multicolumn{2}{c}{General} \\
  \cmidrule{2-7}
  Category 1 & \$ & 15.25 &    &      &    &        \\
  Category 2 &    & 25.34 &    &      & \$ &  73.00 \\
  Category 3 &    &       & \$ & 5.15 &    & 128.16 \\
  \cmidrule{3-3} \cmidrule{5-5} \cmidrule{7-7}
  Totals     & \$ & 40.59 & \$ & 5.15 & \$ & 201.16 \\
  \bottomrule
\end{tabular}
\end{document}

这给了我如下结果:

在此处输入图片描述

我使用单独的列来表示美元符号和金额,以便顶部和底部的美元符号始终对齐。不幸的是,当两列标题比其下方的列宽时,额外的空间会被添加到金额列,这会导致美元符号和金额之间出现相当大的空间。

\thinspace有没有办法重新格式化,以便美元符号距离金额文本左侧不超过一个距离?

我确实非常倾向于让 LaTeX 管理整个列的宽度,因此我宁愿不做任何涉及在任何地方对列宽进行硬编码的事情。(除其他事项外,所有表格内容(金额、类别和列名称)都是动态的。我希望有一个解决方案可以一次性放入生成程序中,而不必针对每个单独的数据集进行微调。)

答案1

siunitx包可以根据小数点分隔符对齐数字,并将单位保留在同一列中。在第二个表中,我还使用该makecell包在长列标题中引入了换行符。

在此处输入图片描述

\documentclass{article}
\usepackage{booktabs}
\usepackage{siunitx}
\DeclareSIUnit{\dollar}{\$}

\usepackage{makecell}

\begin{document}

\sisetup{table-space-text-pre=\si{\dollar}, table-align-text-pre=true}
\begin{tabular}{l S[table-format=2.2]S[table-format=1.2]S[table-format=3.2]}
  \toprule
  & {Special Programs} &{Equipment Maintenance} & {General} \\
  \cmidrule{2-4}
  Category 1 & \si{\dollar} 15.25 &                   &        \\
  Category 2 &             25.34  &                   & \si{\dollar}  73.00 \\
  Category 3 &                    & \si{\dollar} 5.15 &              128.16 \\
  \cmidrule(r){2-2} \cmidrule(lr){3-3} \cmidrule(l){4-4}
  Totals     & \si{\dollar} 40.59 & \si{\dollar} 5.15 & \si{\dollar}  201.16 \\
  \bottomrule
\end{tabular}

\bigskip

\begin{tabular}{l S[table-format=2.2]S[table-format=1.2]S[table-format=3.2]}
  \toprule
  & {\makecell{Special\\ Programs}} &{\makecell{Equipment\\ Maintenance}} & {General} \\
  \cmidrule{2-4}
  Category 1 & \si{\dollar} 15.25 &                   &        \\
  Category 2 &             25.34  &                   & \si{\dollar}  73.00 \\
  Category 3 &                    & \si{\dollar} 5.15 &              128.16 \\
  \cmidrule(r){2-2} \cmidrule(lr){3-3} \cmidrule(l){4-4}
  Totals     & \si{\dollar} 40.59 & \si{\dollar} 5.15 & \si{\dollar}  201.16 \\
  \bottomrule
\end{tabular}
\end{document}

相关内容