使用 siunitx 时表格中的斜体数字未对齐

使用 siunitx 时表格中的斜体数字未对齐

我正在尝试使用包构建一些表格siunitx。正如您在下面的示例中看到的,列中的数字D在前三行(标题后)中对齐得很好。但是,最后一行中的最后一个数字(46.57%)不再对齐。我猜这与使用有关\itshape(我遵循了给出的建议这里)。

您知道如何使用斜体字体形状正确对齐最后一行的数字吗?

在此处输入图片描述

梅威瑟:

\documentclass[a4paper,11pt]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}

\usepackage{siunitx}
 \sisetup{
        group-digits=true,       
        group-minimum-digits=4,
    add-integer-zero=false,
    }

\begin{document}

\begin{table}[htbp]
  \begin{center}
  \caption{Some Table}
  \begin{tabular}{c
          c
          S[table-format = 2.0]
          S[table-format = 2.2]}
    \toprule
    A & B & {C} & {D} \\ \midrule
    1 & 24 & 12 & 50.00\% \\ 
    2 & 22 & 4 & 18.18\% \\ 
    3 & 85 & 45 & 52.94\% \\ \midrule
    \emph{Total} & \emph{131} & {\itshape 61} &  {\itshape 46.57\%}\\
    \bottomrule
  \end{tabular}
  \end{center}
\end{table}

\end{document}

编辑:

根据评论和答案得出的新 MWE:

\documentclass{article}
\usepackage{booktabs}
\usepackage{etoolbox}
\robustify\itshape

\usepackage{siunitx}
 \sisetup{
        group-digits=true,       
        group-minimum-digits=4,
    add-integer-zero=false,
    }
\begin{document}
\begin{table}
  \centering
  \sisetup{detect-all = true, table-space-text-post = \%}
  \begin{tabular}{@{}
          c
          c
          S[table-format = 2.0]
          S[table-format = 2.2]
          @{}}
    \toprule
    A & B & {C} & {D}  \\ \midrule
    1 & 24 & 12 & 50.00\% \\ 
    2 & 22 & 4 & 18.18\% \\ 
    3 & 85 & 45 & 52.94\% \\ \midrule
    \emph{Total} & \itshape 131 & \itshape 61 &  \itshape 46.57\% \\
    \bottomrule
  \end{tabular}
\end{table}

\end{document}

我想我在这里遗漏了一些重要的东西。但是,这个表格(特别是 C 列和 D 列)看起来不对。C 列中的数字向左移动。此外,百分号仍然太靠近右列边框。有什么建议吗?(抱歉,这些问题很详细,听起来很愚蠢。但是,这个表格开始让我失去理智。)

在此处输入图片描述

答案1

该方法与siunitx:粗体单个数字单元格:使其\itshape更加强大,允许siunitx在单元格的开始处找到它,允许siunitx选择合适的字体。

版本 3

对于 v3(当前版本),您需要的代码是

\documentclass{article}
\usepackage{booktabs}
\usepackage{etoolbox}
\robustify\itshape

\usepackage{siunitx}
 \sisetup{
        group-digits=all,       
        group-minimum-digits=4
    }
\begin{document}
\begin{table}
  \centering
  \sisetup{mode = text, reset-text-shape = false}
  \begin{tabular}{@{}
          c
          c
          S[table-format = 2.0]
          S[table-format = 2.2]
          @{}}
    \toprule
    A & B & {C} & {D/\%} \\ \midrule
    1 & 24 & 12 & 50.00 \\ 
    2 & 22 & 4 & 18.18 \\ 
    3 & 85 & 45 & 52.94 \\ \midrule
    \emph{Total} & \itshape 131 & \itshape 61 &  \itshape 46.57\\
    \bottomrule
  \end{tabular}
\end{table}
\end{document}

如果您希望每行都有单位(虽然通常这样做,但一般不建议这样做),那么您需要在相应的列中留出空间:

\documentclass{article}
\usepackage{booktabs}
\usepackage{etoolbox}
\robustify\itshape

\usepackage{siunitx}
 \sisetup{
        group-digits=true,       
        group-minimum-digits=4,
    }
\begin{document}
\begin{table}
  \centering
  \sisetup{mode = text, reset-text-shape = false}
  \begin{tabular}{@{}
          c
          c
          S[table-format = 2.0]
          S[table-format = 2.2\,\%]
          @{}}
    \toprule
    A & B & {C} & {D} \\ \midrule
    1 & 24 & 12 & 50.00\,\% \\ 
    2 & 22 & 4 & 18.18\,\% \\ 
    3 & 85 & 45 & 52.94\,\% \\ \midrule
    \emph{Total} & \itshape 131 & \itshape 61 &  \itshape 46.57\,\%\\
    \bottomrule
  \end{tabular}
\end{table}
\end{document}

版本 2

使用旧版本 2(如果您愿意,可以使用 进行测试\usepackage{siunitx}[=v2]},例如

\documentclass{article}
\usepackage{booktabs}
\usepackage{etoolbox}
\robustify\itshape

\usepackage{siunitx}
 \sisetup{
        group-digits=true,       
        group-minimum-digits=4,
    add-integer-zero=false,
    }
\begin{document}
\begin{table}
  \centering
  \sisetup{detect-all = true}
  \begin{tabular}{@{}
          c
          c
          S[table-format = 2.0]
          S[table-format = 2.2]
          @{}}
    \toprule
    A & B & {C} & {D/\%} \\ \midrule
    1 & 24 & 12 & 50.00 \\ 
    2 & 22 & 4 & 18.18 \\ 
    3 & 85 & 45 & 52.94 \\ \midrule
    \emph{Total} & \itshape 131 & \itshape 61 &  \itshape 46.57\\
    \bottomrule
  \end{tabular}
\end{table}
\end{document}

您可以对每行单位使用类似的方法,但是您需要这样做,S[table-format = 2.2, table-space-text-post = \,\%]因为 v2 无法从中提取后数字部分table-format

答案2

对于任何遇到此问题的人:当我尝试约瑟夫的回答我只是没有看到任何斜体显示,字体都是直立的。但是,使用命令时不会发生这种情况\bfseries,只有\itshape使用命令时才会发生这种情况。

为我解决这个问题的方法是将其更改\usepackage{siunitx}\usepackage{siunitx-v2}。根据日志,这从 v3.0.37 更改为 v2.8e。这有点麻烦,因为例如,这个旧版本的 siunitx 显然无法处理科学计数法值(即2.3e4),而我不得不更改它们。

siunitx 跟踪器中已关闭的问题关于类似的问题,但应该已经修复。我会尝试报告此问题。

相关内容