表格布局中存在文本换行、脚注和 sunitx 的小数分隔符对齐问题

表格布局中存在文本换行、脚注和 sunitx 的小数分隔符对齐问题

我正在尝试用 LaTeX 排版表格。到目前为止,我有以下内容:

\documentclass{scrreprt}

\usepackage{booktabs}
\usepackage{siunitx}

\begin{document}

\begin{table}[ht]
  \centering
  \caption{Table with different values}
  \begin{tabular}{lScSS}
    \toprule
    Model & \multicolumn{1}{p{0.1\textwidth}}{\centering Mass} & \multicolumn{1}{p{0.18\textwidth}}{\centering Dim.\\(X\,\(\times\)\,Y\,\(\times\)\,Z)} & \multicolumn{1}{p{0.3\textwidth}}{\centering Moment of Inertia\\(small comment)} & \multicolumn{1}{p{0.2\textwidth}}{\centering Nominal Torque} \\
              & [\si{\kilogram}] & [\si{mm}] & [\si{\kilogram\meter\squared}] & [\si{\newton\meter}] \\
    \midrule
    A12345678 & 11e-6 & 11\,\(\times\)\,22\,\(\times\)\,33   & 111,1e-6 & 11e-9 \\
    B12345678 & 22e-6 & 44\,\(\times\)\,55\,\(\times\)\,66   & 222,2e-6 & 22e-9 \\
    B12345678 & 0,3   & 77\,\(\times\)\,88\,\(\times\)\,99   & 3,33e-3  & 3e3   \\
    B12345678 & 0,4   & 11\,\(\times\)\,22\,\(\times\)\,33   & 4,44e-3  & 4e-3  \\
    B12345678 & 5,51  & 111\,\(\times\)\,222\,\(\times\)\,33 & 5,552e-3 & 55e30 \\
    B12345678 & 6,7   & 444\,\(\times\)\,555\,\(\times\)\,66 & 6,666e-3 & 6e-3  \\
    B12345678 & 8,9   & 777\,\(\times\)\,888\,\(\times\)\,99 & 7,77e-3  & 0,7   \\
    \bottomrule
  \end{tabular}
\end{table}

Normal lines ot text:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor 
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis 
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu 
fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia 
deserunt mollit anim id est laborum.

\end{document}

上表由 MWE 制作

虽然这大概就是我想要的,但我对结果还是不满意。尤其是文本对齐仍然很奇怪。所以基本上,我想美化一下表格。

我想要实现以下目标:

  • 表格宽度不应超过页面上正常文本的宽度(A4纸大小)
  • 标题行中的文本换行(就像我在 MWE 中所做的那样)
  • 小数分隔符对齐(如果可能,也对齐科学计数法)
  • 单元格内的脚注,其详细说明位于表格下方

优点:
标题设置得非常接近表格顶部规则。这是正常现象吗?如果不是,如何实现适当的间距?

我们也欢迎任何其他改进。

非常感谢您的帮助!

答案1

我建议如下:

\documentclass{scrreprt}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{tabularx}
\usepackage{makecell}
\usepackage{threeparttable}

\begin{document}

\begin{threeparttable}[ht]
  \centering
  \caption{Table with different values}
  \begin{tabularx}{\textwidth}{
  X
  S[table-format=2.2e-1]
  r@{$\times$}c@{$\times$}l
  S[table-format=3.3 E-1]
  S[table-format=2.1e-1]
  }
    \toprule
    Model & {Mass} & \multicolumn{3}{c}{{\makecell{Dim. \\(X$\times$Y$\times$Z)}}} & {\makecell{ Moment of Inertia  \\ (small comment)}} & { Nominal Torque} \\
              & [\si{\kilogram}] & \multicolumn{3}{c}{[\si{mm}]} & [\si{\kilogram\meter\squared}] & [\si{\newton\meter}] \\
    \midrule
    A12345678\tnote{1} & 11e-6 & 11 & 22 & 33   & 111,1e-6 & 11e-9 \\
    B12345678 & 22e-6 & 44&55 & 66   & 222,2e-6 & 22e-9 \\
    B12345678 & 0,3   & 77 & 88 & 99   & 3,33e-3  & 3e3   \\
    B12345678 & 0,4   & 11 & 22 & 33   & 4,44e-3  & 4e-3  \\
    B12345678 & 5,51  & 111 & 222 & 33 & 5,552e-3 & 55e30 \\
    B12345678 & 6,7   & 444 & 555 & 66 & 6,666e-3 & 6e-3  \\
    B12345678 & 8,9   & 777 & 888 & 99 & 7,77e-3  & 0,7   \\
    \bottomrule
  \end{tabularx}
  \begin{tablenotes}
\item[1] a table note to demonstrate the functionality
\end{tablenotes}
\end{threeparttable}
\vspace{\baselineskip}

Normal lines ot text:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor 
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis 
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu 
fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia 
deserunt mollit anim id est laborum.

\end{document}

在此处输入图片描述

与原始代码相比我所做的更改:

  • 使用[table-format]选项形式siunitxS列来确保小数分隔符和指数的对齐。
  • 使用tabularx(和一X列)代替 来tabular确保表格的宽度等于文本宽度。
  • 用于makecell表格单元格中的换行。
  • 用来threeparttable代替table添加表格注释。
  • 重新设计了“尺寸列”以包含三列,并$\times$以列分隔符分隔数字,以便根据乘法符号对齐。

相关内容