siunitx 列对齐,显式加上 newtxtext、newtxmath

siunitx 列对齐,显式加上 newtxtext、newtxmath

我正在尝试制作一个表格,其中正值和负值在同一行中上下排列。我遇到的问题是,当将newtxtextnewtxmath包作为字体与 TeXLive 2022 一起使用时,对齐消失了(它与 <=2021 版本配合使用效果很好)。负数相对于正数发生了偏移,请参阅:

移位正值/负值

没有newtxtextnewtxmath包,我得到了所需的对齐(它仍然不完美,但足够好):

通过 latexit 或 overleaf 对齐的列

梅威瑟:

\documentclass[10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{siunitx, booktabs}
% \usepackage{newtxtext, newtxmath}

\begin{document}
\renewcommand{\arraystretch}{1.2}
\sisetup{round-mode=places, round-precision=3, retain-explicit-plus}
\begin{tabular}{c S S @{\,}S @{\,}S}
  \toprule

  \multicolumn{1}{c}{One} & \multicolumn{1}{c}{Two} & \multicolumn{1}{c}{Three} & \multicolumn{1}{c}{$\pm 1\sigma$} & \multicolumn{1}{c}{$\pm 2\sigma$} \\

  \midrule

  1400  & 0.2469 & 0.2494 & \(^{\num{+0.1462}}_{\num{-0.2217}}\) & \(^{\num{+0.7946}}_{\num{-0.7372}}\) \\
  2200  & 0.1433 & 0.1449 & \(^{\num{+0.3306}}_{\num{-0.2372}}\) & \(^{\num{+0.5893}}_{\num{-0.6317}}\) \\
  3400  & 0.3360 & 0.3396 & \(^{\num{+0.2250}}_{\num{-0.5221}}\) & \(^{\num{+0.8784}}_{\num{-0.8279}}\) \\

  \bottomrule
\end{tabular}
\end{document}

期望的输出将是这样的:

期望前景

答案1

加号的宽度比减号的宽度小,这似乎是 NewTX 中的一个严重缺陷。

您可以通过+在数学模式中重新定义来修复它,以便它使用与减号一样宽的框。

\documentclass[10pt]{article}
\usepackage{siunitx, booktabs}
\usepackage{newtxtext, newtxmath}

\makeatletter
\newcommand{\wellsizedplus}{\mathbin{\mathpalette\wellsizedplus@\relax}}
\mathchardef\standardplus=\mathcode`+
\newcommand{\wellsizedplus@}[2]{%
  \begingroup
  \sbox\z@{$\m@th#1-$}%
  \makebox[\wd\z@]{$\m@th#1\standardplus$}%
  \endgroup
}
\begingroup\lccode`~=`+ \lowercase{\endgroup\protected\def~}{\wellsizedplus}
\AtBeginDocument{\mathcode`+="8000 }

\begin{document}

\renewcommand{\arraystretch}{1.2}

\sisetup{round-mode=places, round-precision=3, retain-explicit-plus}
\begin{tabular}{
  c
  S[table-format=1.3]
  S[table-format=1.3]
  r
  r
}
\toprule

One & {Two} & {Three} &
  \multicolumn{1}{c}{$\pm 1\sigma$} &
  \multicolumn{1}{c}{$\pm 2\sigma$} \\
\midrule
1400  & 0.2469 & 0.2494 & \(^{\num{+0.1462}}_{\num{-0.2217}}\) & \(^{\num{+0.7946}}_{\num{-0.7372}}\) \\
2200  & 0.1433 & 0.1449 & \(^{\num{+0.3306}}_{\num{-0.2372}}\) & \(^{\num{+0.5893}}_{\num{-0.6317}}\) \\
3400  & 0.3360 & 0.3396 & \(^{\num{+0.2250}}_{\num{-0.5221}}\) & \(^{\num{+0.8784}}_{\num{-0.8279}}\) \\

\bottomrule

\end{tabular}

\end{document}

在此处输入图片描述

请注意table-format选项以及最后两列不是 S类型。

答案2

编辑:
现在,编辑后的问题就一目了然了。显示表格(仅前两行),您可以通过以下方式重现:

\documentclass[10pt]{article}
\usepackage{booktabs,
            siunitx}

\begin{document}
\setlength\extrarowheight{2pt}
\sisetup{retain-explicit-plus}
\begin{tabular}{S[table-format=4.0]
            *{2}{S[round-mode=places,
                   round-precision=3,
                   table-format=1.3]}
            *{2}{S[round-mode=places,
                   round-precision=3,
                   table-format=-1.3]}}
    \toprule
{One}   &   {Two}   &  {Three}  &   {$\pm 1\sigma$} &   {$\pm 2\sigma$} \\
    \midrule
4100    &   0.0667  &   0.0493  & $^{\num{+0.0807}}_{\num{-0.104}}$ & $^{\num{+0.6094}}_{\num{-0.504}}$  \\
    \addlinespace
5100    &   0.0334  &   0.0453  & $^{\num{+0.0662}}_{\num{-0.204}}$ & $^{\num{+0.0662}}_{\num{-0.403}}$  \\
    \bottomrule
\end{tabular}
\end{document}

在此处输入图片描述

附录:
使用该tabularray包后,行之间的垂直空间更好,表体代码也更短一些:

\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{booktabs, siunitx, varwidth}

\begin{document}
\sisetup{ round-mode=places,
          round-precision=3,
          retain-explicit-plus}
\begin{tblr}{colspec = { S[table-format=4.0,
                           round-mode=none,
                           round-precision=0]
                    *{2}{S[table-format=1.3]}
                    *{2}{Q[c, si={table-format=-1.3}, mode=math]}
                        },
                 row{1} = {guard},
                 measure=vbox}
    \toprule
One     &   Two     &   Three   &   \pm 1\sigma &   \pm 2\sigma     \\
    \midrule
4100    &   0.0667  &   0.0493  & ^{\num{+0.0807}}_{\num{-0.104}}   & ^{\num{+0.6094}}_{\num{-0.504}}  \\
5100    &   0.0334  &   0.0453  & ^{\num{+0.0662}}_{\num{-0.204}}   & ^{\num{+0.0662}}_{\num{-0.403}}  \\
4100    &   0.0667  &   0.0493  & ^{\num{+0.0807}}_{\num{-0.104}}   & ^{\num{+0.6094}}_{\num{-0.504}}  \\
5100    &   0.0334  &   0.0453  & ^{\num{+0.0662}}_{\num{-0.204}}   & ^{\num{+0.0662}}_{\num{-0.403}}  \\
    \bottomrule
\end{tblr}
\end{document}

在此处输入图片描述

相关内容