对齐小数点 - 如何将 siunitx 或 dcolumn 与 tabulary 一起使用?

对齐小数点 - 如何将 siunitx 或 dcolumn 与 tabulary 一起使用?

我一直在尝试理解语法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根据各个列的内容使用不同的选项。

相关内容