table-format=2.2 表示小数点后 2 位,如果数据中有整数和 %,会发生什么情况?

table-format=2.2 表示小数点后 2 位,如果数据中有整数和 %,会发生什么情况?

这是后续问题内容不在表格中央

我可以考虑使用table-format=2.2数据示例22.22。如果我有一个整数(例如)和表中的10百分比,会发生什么情况。22.22%

有什么方法可以让它居中并且看起来美观吗?

在此处输入图片描述

\documentclass[12pt,oneside]{book}

\usepackage[showframe]{geometry}
\usepackage{amsmath}
\usepackage{ragged2e}
\usepackage{booktabs, makecell, multirow, tabularx,
            threeparttable, tabulary}
\renewcommand\theadfont{\small\bfseries} % for bold in table using \small
\renewcommand\theadgape{}
\usepackage[svgnames, table]{xcolor}
\usepackage{siunitx} %for table spacing to second row
\usepackage{graphicx}

\usepackage[font=small,
            labelfont={bf,sf}, textfont={sf}, 
            justification=centering]{caption}

\begin{document}

\begin{table}[h!]
\setlength{\tabcolsep}{1em}
\centering
\begin{tabular}{
  l
  S[table-format=2.2,table-space-text-post=\%]
  S[table-format=2.2,table-space-text-post=\%]
  S[table-format=2.2,table-space-text-post=\%]
}
\toprule
    & \multicolumn{3}{c}{\thead{\makebox[0pt]{\textbf{System Nuclear Accuracy}}}}\\ 
     \cmidrule{2-4}
& {\textbf{AA}}
& {\textbf{BB}}
& {\textbf{CC}} \\
\midrule
N       & {10}  &  {10}  & {10}     \\
    Mean    & 33.83\%  & 33.67\%  & 33.78\%  \\
    Median  & 44.33\%  & 33.89\%  & 44.83\%  \\
    Variance & 254.42 & 444.708 & 33.79 \\
\bottomrule
\end{tabular}
\end{table}

    \end{document}

答案1

我建议使用下列三个表格中的其中一个。

在第一个中,我已将 更正为。table-format这是必要的,因为您最长的数字是“444.708”,它有 3 个整数和 3 个小数位。因此。我还删除了 周围的 ,因为您在评论中表示您还希望将 10 与其他数字对齐。(就我个人而言,我会将 10 居中。)如您所见,数字和百分号之间现在将有一个水平空白。您可以通过将所有数字四舍五入到相同的小数位数来消除它(如 Zarko 所示)2.23.33.3{}10在他们的回答中)或者您可以table-align-text-post=false像我在第二个例子中所做的那样添加。

在第三个表中,我删除了百分号并将其添加到第一列。使用此方法,您将只得到两个百分号,而不是 6 个。

在所有表格中,我还注释掉了\setlength{\tabcolsep}{1em}列之间的额外空白。我还添加了两个简化功能以节省一些输入时间并使代码更短。S您可以使用*{<number>}{<column specification>}来重复同一列,而不必重新输入列及其所有选项。我在表一和表二中使用了它。您不必像 那样将选项直接添加到列说明符中,S[<options here>]您还可以使用\sisetup{table-format=3.3}。我在第三个表中使用了它。

在此处输入图片描述

\documentclass[12pt,oneside]{book}

\usepackage[showframe]{geometry}
\usepackage{amsmath}
\usepackage{ragged2e}
\usepackage{booktabs, makecell, multirow, tabularx,
            threeparttable, tabulary}
\renewcommand\theadfont{\small\bfseries} % for bold in table using \small
\renewcommand\theadgape{}
\usepackage[svgnames, table]{xcolor}
\usepackage{siunitx} %for table spacing to second row
\usepackage{graphicx}

\usepackage[font=small,
            labelfont={bf,sf}, textfont={sf}, 
            justification=centering]{caption}

\begin{document}

\begin{table}[h!]
%\setlength{\tabcolsep}{1em}
\centering
\begin{tabular}{
  l
  *{3}{S[table-format=3.3,table-space-text-post = \si{\percent}]}
}
\toprule
    & \multicolumn{3}{c}{\thead{System Nuclear Accuracy}}\\ 
     \cmidrule{2-4}
& {\thead{AA}}
& {\thead{BB}}
& {\thead{CC}} \\
\midrule
N        & 10       &  10      & 10       \\
Mean     & 33.83\%  & 33.67\%  & 33.78\%  \\
Median   & 44.33\%  & 33.89\%  & 44.83\%  \\
Variance & 254.42   & 444.708  & 33.79    \\
\bottomrule
\end{tabular}
\end{table}


\begin{table}[h!]
%\setlength{\tabcolsep}{1em}
\centering
\begin{tabular}{
  l
  *{3}{S[table-format=3.3,table-space-text-post = \si{\percent}, table-align-text-post=false]}
}
\toprule
    & \multicolumn{3}{c}{\thead{System Nuclear Accuracy}}\\ 
     \cmidrule{2-4}
& {\thead{AA}}
& {\thead{BB}}
& {\thead{CC}} \\
\midrule
N        & 10       &  10      & 10       \\
Mean     & 33.83\%  & 33.67\%  & 33.78\%  \\
Median   & 44.33\%  & 33.89\%  & 44.83\%  \\
Variance & 254.42   & 444.708  & 33.79    \\
\bottomrule
\end{tabular}
\end{table}


\begin{table}[h!]
%\setlength{\tabcolsep}{1em}
\centering
\sisetup{table-format=3.3}
\begin{tabular}{
  l
  *{3}{S}
}
\toprule
    & \multicolumn{3}{c}{\thead{System Nuclear Accuracy}}\\ 
     \cmidrule{2-4}
& {\thead{AA}}
& {\thead{BB}}
& {\thead{CC}} \\
\midrule
N        & 10       &  10      & 10       \\
Mean (\si{\percent})    & 33.83  & 33.67  & 33.78  \\
Median (\si{\percent})   & 44.33  & 33.89  & 44.83  \\
Variance & 254.42   & 444.708  & 33.79    \\
\bottomrule
\end{tabular}
\end{table}

\end{document}

答案2

尝试:

\documentclass[12pt,oneside]{book}

\usepackage[showframe]{geometry}
\usepackage{amsmath}
\usepackage{ragged2e}
\usepackage{booktabs, makecell, multirow, tabularx,
            threeparttable, tabulary}
\renewcommand\theadfont{\small\bfseries} % for bold in table using \small
\renewcommand\theadgape{}
\usepackage[svgnames, table]{xcolor}
\usepackage{siunitx} %for table spacing to second row
\usepackage{graphicx}

\usepackage[font=small,
            labelfont={bf,sf}, textfont={sf},
            justification=centering]{caption}

\begin{document}
    \begin{table}[ht]               % <---
%\setlength{\tabcolsep}{1em}
\centering
\sisetup{table-format=3.2,          % <---
         table-space-text-post=\%,
         round-mode=places,         % <---
         round-precision=2          % <---              
         }
\begin{tabular}{l *{3}{S}}          % <---
    \toprule
    & \multicolumn{3}{c}{\thead{System Nuclear Accuracy}}\\  % <---
     \cmidrule{2-4}
        & {\thead{AA}}  & {\thead{BB}}  & {\thead{CC}}  \\  % <---
    \midrule
N           & {10}      &  {10}     & {10}              \\
Mean        & 33.83\,\% & 33.67\,\% & 33.78\,\%         \\  % <---
Median      & 44.33\,\% & 33.89\,\% & 44.83\,\%         \\  % <---
Variance    & 254.42    & 444.708   & 33.79             \\
    \bottomrule
\end{tabular}
    \end{table}
\end{document}

在此处输入图片描述

相关内容