为什么我必须在 siunitx 表格行为的全局和本地设置之间进行选择?

为什么我必须在 siunitx 表格行为的全局和本地设置之间进行选择?

这是表格中的数字:按小数点对齐*并且*向右对齐?

在带有 的表格集中siunitx,我可以在命令\sisetup{}或环境选项中提供格式化选项\begin{tabular}。为什么会这样?我想提供全局设置,但仍然能够修改单个列。

\documentclass{article}
\usepackage[
per-mode=symbol-or-fraction,
locale=DE,
sticky-per
]{siunitx} 
\usepackage{subcaption}
\usepackage[table]{xcolor}

\begin{document}

\begin{table}
    \caption{Comparing global and local settings}
    \sffamily
    \begin{subfigure}[t]{.48\linewidth}
    \caption{Global}
    \sffamily
    \sisetup{detect-family, table-number-alignment = right}
    \rowcolors{2}{white}{gray!20}
    \centering   
        \begin{tabular}{S[table-format=6.0] S[table-format=2.0] S[table-format=4.0]}\hline
        \multicolumn{1}{c|}{Foo} & \multicolumn{1}{c|}{$F$ in \si{\hertz}} & \multicolumn{1}{c}{$\sigma$ in \si{\newton\per\meter\squared}}\\ \hline
        123456 & 12 & 1234 \\ 
        12345 & 1 & 123 \\ 
        1234 & 0 & 12 \\ \hline
        \end{tabular} 
    \end{subfigure}%
    \hfill
    \begin{subfigure}[t]{.48\linewidth}
    \rowcolors{2}{white}{gray!20}
    \centering
    \caption{Local}
    \sffamily
    \sisetup{detect-family}
        \begin{tabular}{S[table-format=6.0, table-number-alignment = right] S[table-format=2.0, table-number-alignment = right] S[table-format=4.0, table-number-alignment = right]}\hline
        \multicolumn{1}{c|}{Foo} & \multicolumn{1}{c|}{$F$ in \si{\hertz}} & \multicolumn{1}{c}{$\sigma$ in \si{\newton\per\meter\squared}}\\ \hline
        123456 & 12 & 1234 \\ 
        12345 & 1 & 123 \\ 
        1234 & 0 & 12 \\ \hline
        \end{tabular} 
    \end{subfigure} 
\end{table}

\end{document}

编辑

如果我只是设置一个{S S S}表格,输出将正确对齐,但有时我只想更改单个列的一个选项。我认为这不直观。

答案1

设置table-format会自动设置table-number-alignment = center,如软件包文档中所述。因此,如果您设置table-format并想要不同的对齐方式,您也需要设置它。

原因是“开箱即用”的设置包括table-number-alignment = center-decimal-marker(因为这是“安全”位置)。因此,如果没有这种自动设置行为,您将看不到任何变化,table-format仅通过设置,这会非常令人困惑。

相关内容