在表格环境中使用 siunitx 包进行数字(计算结果)对齐的问题

在表格环境中使用 siunitx 包进行数字(计算结果)对齐的问题

我在尝试使用包对齐数字和计算结果时遇到了一些问题siunitx。这是我的代码。

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

% #1: decimal places (default=2), #2: value
\newcommand*{\KelvinToCelsius}[2][2]{%
    \FPeval\tempKtoC{round((#2-273.15):#1)}%
    \num{\tempKtoC}%
}

\begin{document}
    \begin{tabular}{S S}
        \toprule
        \si{\kelvin} & \si{\celsius} \\
        \midrule
           10.3  & {\KelvinToCelsius{10.3}}     \\
          200.34 & {\KelvinToCelsius{200.34}}   \\
          500.26 & {\KelvinToCelsius{500.26}}   \\
         1200.5  & {\KelvinToCelsius[1]{1200.5}}\\
        12345    & {\KelvinToCelsius[0]{12345}} \\
        \bottomrule
    \end{tabular}
\end{document}

其结果为:

输出图像

请注意,第二列中的数字没有对齐。

如何解决这个问题?

答案1

充分利用expl3\KelvinToCelsius命令必须是可扩展的,并且甚至可以使用可选参数。

使用\fpeval可让您免于fp

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

% #1: decimal places (default=2), #2: value
\NewExpandableDocumentCommand{\KelvinToCelsius}{O{2}m}{%
  \fpeval{round(#2-273.15,#1)}%
}

\begin{document}

\begin{tabular}{
  S[table-format=5.2]
  S[table-format=5.2]
}
\toprule
{\si{\kelvin}} & {\si{\celsius}} \\
\midrule
   10.3  & \KelvinToCelsius{10.3}     \\
  200.34 & \KelvinToCelsius{200.34}   \\
  500.26 & \KelvinToCelsius{500.26}   \\
 1200.5  & \KelvinToCelsius[1]{1200.5}\\
12345    & \KelvinToCelsius[0]{12345} \\
\bottomrule
\end{tabular}

\end{document}

在此处输入图片描述

答案2

命令必须可扩展,以便 siunitx 看到“纯数字”。最好使用 xfp 包进行计算并避免使用可选参数。

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

% #1: decimal places (default=2), #2: value
\newcommand*{\KelvinToCelsius}[1]{% no optional argument
    \fpeval{round((#1-273.15)/2,2)}%    
}

\begin{document}
    \begin{tabular}{S S}
        \toprule
        \si{\kelvin} & \si{\celsius} \\
        \midrule
           10.3  & \KelvinToCelsius{10.3}     \\
          200.34 & \KelvinToCelsius{200.34}   \\
          500.26 & \KelvinToCelsius{500.26}   \\
        %1200.5  & {\KelvinToCelsius[1]{1200.5}}\\
        %12345    & {\KelvinToCelsius[0]{12345}} \\
        \bottomrule
    \end{tabular}
\end{document}

在此处输入图片描述

相关内容