我一直在尝试理解语法siunitx
以及如何使用它来tabulary
将数据与小数对齐,并在列中使用适当的有效数字。是否需要手动调整S[table-format... ]
每一列?是否有适用于整个表格的通用设置?我打算创建更长的表格(可能使用longtable
?),这些表格将分布在文档的多个页面上,而调整每一列的设置会太多。
能否请您帮我调整 MWE 以实现小数对齐?另外,如何增加底部单行的填充?我尝试在字符串中更改{l}
为,我必须传递什么参数?{lb}
\multicolumn{12}{l}{..text..} \\
这是我正在处理的内容(也许值得注意的是,我正在使用具有多个嵌套文件的自定义论文文档类,因此序言不是那么简单)。
谢谢
\usepackage{siunitx}
\usepackage{amsmath}
\usepackage{booktabs, array, tabularx, ragged2e, tabulary,longtable}
\begin{document}
\begin{table}[ht]
\centering
\caption{XRF and ICP-AES standardisation, Bureau Veritas Canada (BVC) data}
\label{AppB-XRF-ICP-BVC}
%\resizebox{\pagewidth}{!}{%
\begin{tabulary}{\textwidth}{LCRRRRRRCCCC}
\toprule
Analyte & MDL & SO-19 Expected & SO-19(1) & SO-19(2) & SO-19(3) & SO-19(4) & AVG SO-19 & Accuracy (absolute) & Error (± \% relative to SO-19) & 2$\sigma$ & RSD (\%) \\ \midrule
MAX & & & & & & & & 0.89 & 2.54\% & & 2.55 \\
AVG & & & & & & & & 0.13 & 1.14\% & & 0.57 \\
\midrule
\multicolumn{12}{l}{\textit{Major elements (wt\%)}} \\
\ce{SiO2} & 0.01 & 61.13 & 60.19 & 60.36 & 60.23 & 60.18 & 60.24 & 0.89 & 1.46 & 0.17 & 0.14 \\
\ce{Al2O3} & 0.01 & 13.95 & 14.04 & 14.05 & 14.07 & 14.13 & 14.07 & 0.12 & 0.88 & 0.08 & 0.29 \\
\ce{Fe2O3} & 0.04 & 7.47 & 7.57 & 7.43 & 7.57 & 7.54 & 7.53 & 0.06 & 0.77 & 0.13 & 0.88 \\
CaO & 0.01 & 6 & 5.95 & 5.95 & 5.94 & 5.94 & 5.95 & 0.05 & 0.92& 0.01 & 0.10 \\
MgO & 0.01 & 2.88 & 2.95 & 2.95 & 2.93 & 2.94 & 2.94 & 0.06 & 2.17 & 0.02 & 0.33 \\
\ce{Na2O} & 0.01 & 4.11 & 4.07 & 4.06 & 4.04 & 4.05 & 4.06 & 0.06 & 1.34 & 0.03 & 0.32 \\
\ce{K2O} & 0.01 & 1.29 & 1.31 & 1.31 & 1.3 & 1.31 & 1.31 & 0.02 & 1.36 & 0.01 & 0.38 \\
\ce{Cr2O3} & - & 0.5 & 0.506 & 0.501 & 0.507 & 0.511 & 0.51 & 0.01 & 1.25 & - & 0.81 \\
\ce{TiO2} & 0.01 & 0.69 & 0.71 & 0.71 & 0.71 & 0.7 & 0.71 & 0.02 & 2.54 & 0.01 & 0.71 \\
MnO & 0.01 & 0.13 & 0.13 & 0.13 & 0.13 & 0.13 & 0.13 & 0.00 & 0.00 & 0 & 0.00 \\
\ce{P2O5} & 0.01 & 0.32 & 0.32 & 0.31 & 0.32 & 0.33 & 0.32 & 0.00 & 0.00 & 0.02 & 2.55 \\
LOI & -5.1 & & 1.9 & 1.9 & 1.9 & 1.9 & 1.9 & & & & \\
Total & - & & & & & & & & & & \\ \midrule
\multicolumn{12}{l}{\textit{Trace elements (ppm)}} \\
Ba & 5 & 486 & 466 & 461 & 472 & 473 & 468 & 18.00 & 3.70 & 11.20 & 1.20 \\
Nb & 5 & 68.5 & 80 & 74 & 71 & 74 & 74.75 & 6.25 & 9.12 & 7.55 & 5.05 \\
Ni & 20 & 470 & 476 & 466 & 467 & 476 & 471.25 & 1.25 & 0.27 & 11.00 & 1.17 \\
Sc & 1 & 27 & 26 & 26 & 26 & 27 & 26.25 & 0.75 & 2.78 & 1.00 & 1.90 \\
Sr & 2 & 317.1 & 316 & 317 & 314 & 315 & 315.5 & 1.60 & 0.35 & 2.58 & 0.41 \\
Y & 3 & 35.5 & 35 & 34 & 35 & 35 & 34.75 & 0.75 & 1.41 & 1.00 & 1.44 \\
Zr & 5 & 112 & 121 & 123 & 118 & 115 & 119.25 & 7.25 & 8.04 & 7.00 & 2.94 \\
\bottomrule
\multicolumn{12}{l}{MDL = method detection limit, AVG = average, RSD = relative standard deviation, na = not analysed} \\
\end{tabulary}
\end{table}
\end{document}
答案1
起点:
根据您的实际文档的设置(字体大小、边距宽度等),可能需要进行一些调整以确保表格适合可用空间。
\documentclass{article}
\usepackage[margin=2cm]{geometry}
\usepackage[version=4]{mhchem}
\usepackage{siunitx}
\usepackage{booktabs}
\usepackage{threeparttable}
\begin{document}
\begin{table}[ht]
\centering
\small
\begin{threeparttable}
\caption{XRF and ICP-AES standardisation, Bureau Veritas Canada (BVC) data}
\label{AppB-XRF-ICP-BVC}
\begin{tabular*}{\linewidth}{l@{\extracolsep{\fill}}
S[table-format=-2.2]
*{6}{S[table-format=3.3]}
*{4}{S[table-format=2.3]}}
\toprule
Analyte & {MDL} & \multicolumn{6}{c}{SO-19} & {Accur.} & {Error\textsuperscript{*}} & {2$\sigma$} & {RSD} \\ \cmidrule{3-8}
& & {Exp.} & {(1)} & {(2)} & {(3)} & {(4)} & {AVG} & {(abs.)} & & & {(\%)} \\ \midrule
MAX & & & & & & & & 0.89 & {2.54\%} & & 2.55 \\
AVG & & & & & & & & 0.13 & {1.14\%} & & 0.57 \\
\midrule
\multicolumn{12}{@{}l}{\textit{Major elements (wt\%)}} \\
\ce{SiO2} & 0.01 & 61.13 & 60.19 & 60.36 & 60.23 & 60.18 & 60.24 & 0.89 & 1.46 & 0.17 & 0.14 \\
\ce{Al2O3} & 0.01 & 13.95 & 14.04 & 14.05 & 14.07 & 14.13 & 14.07 & 0.12 & 0.88 & 0.08 & 0.29 \\
\ce{Fe2O3} & 0.04 & 7.47 & 7.57 & 7.43 & 7.57 & 7.54 & 7.53 & 0.06 & 0.77 & 0.13 & 0.88 \\
CaO & 0.01 & 6 & 5.95 & 5.95 & 5.94 & 5.94 & 5.95 & 0.05 & 0.92& 0.01 & 0.10 \\
MgO & 0.01 & 2.88 & 2.95 & 2.95 & 2.93 & 2.94 & 2.94 & 0.06 & 2.17 & 0.02 & 0.33 \\
\ce{Na2O} & 0.01 & 4.11 & 4.07 & 4.06 & 4.04 & 4.05 & 4.06 & 0.06 & 1.34 & 0.03 & 0.32 \\
\ce{K2O} & 0.01 & 1.29 & 1.31 & 1.31 & 1.3 & 1.31 & 1.31 & 0.02 & 1.36 & 0.01 & 0.38 \\
\ce{Cr2O3} & {--} & 0.5 & 0.506 & 0.501 & 0.507 & 0.511 & 0.51 & 0.01 & 1.25 & {--} & 0.81 \\
\ce{TiO2} & 0.01 & 0.69 & 0.71 & 0.71 & 0.71 & 0.7 & 0.71 & 0.02 & 2.54 & 0.01 & 0.71 \\
MnO & 0.01 & 0.13 & 0.13 & 0.13 & 0.13 & 0.13 & 0.13 & 0.00 & 0.00 & 0 & 0.00 \\
\ce{P2O5} & 0.01 & 0.32 & 0.32 & 0.31 & 0.32 & 0.33 & 0.32 & 0.00 & 0.00 & 0.02 & 2.55 \\
LOI & -5.1 & & 1.9 & 1.9 & 1.9 & 1.9 & 1.9 & & & & \\
Total & {--} & & & & & & & & & & \\ \midrule
\multicolumn{12}{@{}l}{\textit{Trace elements (ppm)}} \\
Ba & 5 & 486 & 466 & 461 & 472 & 473 & 468 & 18.00 & 3.70 & 11.20 & 1.20 \\
Nb & 5 & 68.5 & 80 & 74 & 71 & 74 & 74.75 & 6.25 & 9.12 & 7.55 & 5.05 \\
Ni & 20 & 470 & 476 & 466 & 467 & 476 & 471.25 & 1.25 & 0.27 & 11.00 & 1.17 \\
Sc & 1 & 27 & 26 & 26 & 26 & 27 & 26.25 & 0.75 & 2.78 & 1.00 & 1.90 \\
Sr & 2 & 317.1 & 316 & 317 & 314 & 315 & 315.5 & 1.60 & 0.35 & 2.58 & 0.41 \\
Y & 3 & 35.5 & 35 & 34 & 35 & 35 & 34.75 & 0.75 & 1.41 & 1.00 & 1.44 \\
Zr & 5 & 112 & 121 & 123 & 118 & 115 & 119.25 & 7.25 & 8.04 & 7.00 & 2.94 \\
\bottomrule
\end{tabular*}
\begin{tablenotes}[flushleft]\setlength\labelsep{0pt}
\item[]MDL = method detection limit, AVG = average, RSD = relative standard deviation, na = not analysed, Accur. = Accuracy, abs. = absolute, Exp. = Expected, \textsuperscript{*} (± \% relative to SO-19)
\end{tablenotes}
\end{threeparttable}
\end{table}
\end{document}
一些背景解释
\begin{tabular*}{\linewidth}{l@{\extracolsep{\fill}}
S[table-format=-2.2]
*{6}{S[table-format=3.3]}
*{4}{S[table-format=2.3]}}
第一个参数({\linewidth}
)是表格的整体宽度,第二个参数包含列说明符。第一列是l
类型列。@{\extracolsep{\fill}}
被添加以确保表格适合文本宽度(简化后,它在列之间均匀分布额外的水平空白。)以下三行包含表格其他 11 列的列说明符。*{4}{S[table-format=2.3]}
与 相同S[table-format=2.3] S[table-format=2.3] S[table-format=2.3] S[table-format=2.3]
并被使用,因为您提到想要一个应用于整个表格的更通用的设置。虽然也可以使用\sisetup{table-format:=...}
after\begin{table}
和 beforetabular*
将设置应用于S
此特定表格中的所有类型列,但您的表格需要table-format
根据各个列的内容使用不同的选项。