Aligning siunitx table by decimal with bold and exponent

alignmentsiunitxsymbolstables

I am trying to make table using siunitx and want to align the values by the decimal dots, but i got something like this instead:

enter image description here

code:

\begin{table}[!htb]
\centering
\sisetup{
  table-align-uncertainty=true,
  separate-uncertainty=true,
  output-exponent-marker = \text{e}
}
%% local redefinitions
\renewrobustcmd{\bfseries}{\fontseries{b}\selectfont}
\renewrobustcmd{\boldmath}{}

\begin{tabular}{
  l
  l
  l
  >{\color{blue}}S[table-format=3.4,detect-weight,mode=text,parse-numbers = true]
  @{${}\color{blue}\pm{}$}
  >{\color{blue}}S[table-format=2.4,detect-weight,mode=text,parse-numbers = true]
}
\toprule
{Test Problem}& {Budget}  & {Method}    & \multicolumn{2}{c}{\color{blue}Score}   \\
\midrule
Funct1        & 100    & Met1   & \bfseries\num{2.1854e+5} & \num{4.8133e+2}            \\ 
              & 100    & Met2   & \num{2.1972e+5} & \num{4.1228e+2}            \\ 
              & 250    & Met3   & \num{2.2152e+5} & \bfseries\num{4.6356e+1}             \\ \hline
Funct2        & 100    & Met1   & \bfseries 4.2191      & 0.0292            \\ 
              & 100    & Met2   & 4.4211      & \bfseries 0.0015              \\ 
              & 100    & Met3   & 4.3278      & 0.0074              \\ 
\bottomrule
\end{tabular}
\end{table}

when I am not using exponent it works perfectly even with \bfseries, is there something missing here?

Best Answer

With libertinus font and siunitx version 3:

\documentclass[border=3.141592, preview]{standalone}

\usepackage[semibold]{libertine}
\usepackage{libertinust1math}

\usepackage{xcolor}
\usepackage{booktabs}
\usepackage{siunitx}

\usepackage{etoolbox}
\newrobustcmd\B{\DeclareFontSeriesDefault[rm]{bf}{b}\bfseries}
\newcommand\mcc[1]{\multicolumn{1}{c}{#1}}

\begin{document}
    \begin{table}[htb]
\sisetup{
  text-series-to-math,
  output-exponent-marker = \text{e},
  table-format=1.4e1
}
\begin{tabular}{
  l
  l
  l
  >{\color{blue}}S
  @{\,\color{blue}$\pm$\,}
  >{\color{blue}}S
}
\toprule
Test Problem    
        & Budget    & Method    & \multicolumn{2}{c}{\textcolor{blue}{Score}}  \\
\midrule
Funct1  & 100       & Met1      &\B 2.1854e+5   & 4.8133e+2     \\
        & 100       & Met2      &   2.1972e+5   & 4.1228e+2     \\
        & 250       & Met3      &   2.2152e+5   &\B 4.6356e+1   \\ 
    \midrule
Funct2  & 100       & Met1      &\B 4.2191      & 0.0292        \\
        & 100       & Met2      &   4.4211      &\B 0.0015      \\
        & 100       & Met3      &   4.3278      & 0.0074        \\
    \bottomrule
\end{tabular}
    \end{table}
\end{document}

enter image description here

Addendum: A possible solution for "default" font family:

\documentclass[border=3.141592, preview]{standalone}

\usepackage{xcolor}
\usepackage{booktabs}
\usepackage{siunitx} % version v3.0.30

\usepackage{etoolbox}
\newrobustcmd\B{\DeclareFontSeriesDefault[rm]{bf}{b}\bfseries}
\newcommand\mcc[1]{\multicolumn{1}{c}{#1}}

\begin{document}
    \begin{table}[htb]
    \centering
\sisetup{detect-weight, % <--
         mode=text,     % <--
         output-exponent-marker = \text{e},
         table-format=1.4e1
}
\begin{tabular}{
  l
  l
  l
  >{\color{blue}}S
  @{\,\color{blue}$\pm$\,}
  >{\color{blue}}S
}
%%%% table body is the same as before
    \end{table}
\end{document}

enter image description here

Related Question