我正在尝试用 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}
虽然这大概就是我想要的,但我对结果还是不满意。尤其是文本对齐仍然很奇怪。所以基本上,我想美化一下表格。
我想要实现以下目标:
- 表格宽度不应超过页面上正常文本的宽度(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]
选项形式siunitx
的S
列来确保小数分隔符和指数的对齐。 - 使用
tabularx
(和一X
列)代替 来tabular
确保表格的宽度等于文本宽度。 - 用于
makecell
表格单元格中的换行。 - 用来
threeparttable
代替table
添加表格注释。 - 重新设计了“尺寸列”以包含三列,并
$\times$
以列分隔符分隔数字,以便根据乘法符号对齐。