使用百分比格式化 S 列

使用百分比格式化 S 列

为什么下表中列的格式化结果S不同,即取决于列在表中的位置?因此这些表格的宽度不同。

\documentclass{article}           
    \usepackage{siunitx}
    \usepackage{array}

\newcommand\mc[1]{\multicolumn{1}{c}{#1}}

    \begin{document}
\begin{tabular}{c c|  
                *{2}{S[table-format=2.2,
                       table-space-text-post=\si{\,\%}\ ]<{\,\%}|}
                }
    \hline
A  &    B       &   \mc{C}  &   \mc{D}  \\  \hline
xx & xx xxx     &   12.34   &   56.78   \\  \hline
\end{tabular}

\bigskip
\begin{tabular}{c| 
                *{2}{S[table-format=2.2,
                       table-space-text-post=\si{\,\%}\ ]<{\,\%}|}
                c}
    \hline
A  &   \mc{C}  &   \mc{D}   &    B     \\   \hline
xx &   12.34   &   56.78    & xx xxx   \\   \hline
\end{tabular}
    \end{document}

在此处输入图片描述

如您所见,区别在于数字和伴随符号之间的空格\%。可能在列的格式中D我错过了一些明显的东西 :-(

答案1

在列之间添加百分比比附加百分比更容易。

\documentclass{article}
\usepackage{siunitx}
\usepackage{booktabs}

\newcommand\mc[1]{\multicolumn{1}{c}{#1}}

\begin{document}
\sisetup{
  table-format=2.2
}
\begin{tabular}{ccS@{\,\%\hspace{2\tabcolsep}}S@{\,\%}}
  \toprule
  A  &    B   & \mc{C} & \mc{D} \\
  xx & xx xxx & 12.34  & 56.78  \\
  \bottomrule
\end{tabular}

\bigskip
\begin{tabular}{@{}c*2{S@{\,\%\hspace{2\tabcolsep}}}c@{}}
  \toprule
  A  & \mc{C} & \mc{D} &    B   \\
  xx & 12.34  & 56.78  & xx xxx \\
  \bottomrule
\end{tabular}
\end{document}

在此处输入图片描述

最简单的(从我的角度来看也是最优雅的)变体是将单位添加到列标题。

\documentclass{article}
\pagestyle{empty}
\usepackage{siunitx}
\usepackage{booktabs}

\newcommand\mc[1]{\multicolumn{1}{c}{#1}}

\begin{document}
\sisetup{
  table-format=2.2
}
\begin{tabular}{ccSS}
  \toprule
  A  &    B   & \mc{C [\si{\percent}]} & \mc{D [\si{\percent}]} \\
  xx & xx xxx & 12.34  & 56.78  \\
  \bottomrule
\end{tabular}

\bigskip
\begin{tabular}{@{}cSSc@{}}
  \toprule
  A  & \mc{C [\si{\percent}]} & \mc{D [\si{\percent}]} &    B   \\
  xx & 12.34  & 56.78  & xx xxx \\
  \bottomrule
\end{tabular}
\end{document}

在此处输入图片描述

答案2

这是一个众所周知的问题,它被描述在siunitx手册的7.13 在表格最后一列后添加项目(第 66 页,发布日期 2017/11/26):

当使用数组包“<”构造在 Ss列后插入材料时,如果使用标准表格行终止符,则最后一列的对齐方式可能会错误\\。这是由于 LATEX 在低级别构造表格的方式造成的。可以使用 TEX \cr 基元来结束表格行(表 48)来避免不正确的间距。

将其应用于我的问题中描述的情况:

\documentclass{article}
    \usepackage{siunitx}
    \usepackage{array}

\newcommand\mc[1]{\multicolumn{1}{c|}{#1}}

    \begin{document}
\begin{tabular}{|c c|
                *{2}{S[table-format=2.2,
                       table-space-text-post=\si{\,\%}\ ]<{\,\%}|}
                }
    \hline
A  &    B       &   \mc{C}  &   \mc{D}  \cr  \hline
xx & xx xxx     &   12.34   &   56.78   \cr  \hline
\end{tabular}
    \end{document}

给出

在此处输入图片描述

相关内容