Skip to content

Instantly share code, notes, and snippets.

@moi90
Last active January 19, 2025 02:13
Show Gist options
  • Save moi90/fe88ca891bcdc069044255425fea3078 to your computer and use it in GitHub Desktop.
Save moi90/fe88ca891bcdc069044255425fea3078 to your computer and use it in GitHub Desktop.
\documentclass{article}
\usepackage{siunitx}
\usepackage{booktabs}
\usepackage[table]{xcolor}
\usepackage{etoolbox}
% Individual \itshape or \bfseries work without this.
% Combinations of both need the robustified version
\robustify\itshape
\robustify\bfseries
\begin{document}
% Required so that siunitx can detect \bfseries, \itshape, etc
\sisetup{detect-all = true}
\begin{table}[t]
\centering
\caption{\texttt{siunitx S} columns require a special treatment to format them correctly.}
\begin{tabular}{SS}
\toprule
% Non-number headings require braces:
{Heading A} & {Heading B} \\
% Fails with an error: Heading A & Heading B \\
\midrule
1.00 & 2.00 \\
% This is the only way to correctly color and format cells for siunitx:
{\cellcolor[gray]{0.8}} \bfseries 10.0 & \bfseries\itshape 20.0\\
100.000 & 200.000 \\
% color
\color{red} 1000.00 & \color{green} \bfseries 2000.00\\
\multicolumn{2}{c}{(Cells aligned at decimal dot)}\\
\midrule
10.0 & 20.0 \\
% \cellcolor does not work without enclosing braces: Wrong alignment
\cellcolor[gray]{0.8} \textbf 10.0 & \bfseries \itshape 20.0 \\
\multicolumn{2}{c}{(Second 10.0 is wrongly aligned,}\\
\multicolumn{2}{c}{formatting is only applied to first digit.)}\\
\midrule
10.0 & 20.0 \\
% \textbf and \textit do not work: Wrong alignment
{\cellcolor[gray]{0.8}} \textbf{10.0} & \textit{20.0}\\
\multicolumn{2}{c}{(Second 10.0 and 20.0 are wrongly aligned)}\\
\bottomrule
\end{tabular}
\end{table}
\begin{table}[t]
\centering
\caption{Formatting also works with regular \texttt{c} columns}
\begin{tabular}{cc}
\toprule
% Non-number headings require braces:
{Heading A} & {Heading B} \\
% Fails with an error: Heading A & Heading B \\
\midrule
1.00 & 2.00 \\
% This is the only way to correctly color and format cells for siunitx:
{\cellcolor[gray]{0.8}} \bfseries 10.0 & \bfseries \itshape 20.0\\
100.000 & 200.000 \\
\color{red} 1000.00 & \color{green} \bfseries 2000.00\\
\bottomrule
\end{tabular}
\end{table}
\end{document}
@attack68
Copy link

attack68 commented Mar 30, 2021

Screen Shot 2021-03-30 at 08 05 49

I needed to add \sisetup{detect-all = true}

@moi90
Copy link
Author

moi90 commented Mar 30, 2021

This looks really nice!

If I default CSS conversion to use \textbf and \textit in non-siunitx and use \itshape and \bfseries with siunitx is there any benefit? should I be aware of any differences between the two?

I don't think there would be any benefit. Apart from "italic correction" (done by \textit but not needed in the context of tables) there shouldn't be any difference (see e.g. here). As my example shows, the combination of bold and italic also works in both cases.

I needed to add \sisetup{detect-all = true}

Yes.

The only thing left is the automatic choice of the S column type. As far as I can see, the siunitx parameter influences nothing else apart from the column format.

@attack68
Copy link

I don't think there would be any benefit. Apart from "italic correction" (done by \textit but not needed in the context of tables) there shouldn't be any difference (see e.g. here). As my example shows, the combination of bold and italic also works in both cases.

OK so it seems like \itshape and \bfseries play nicely together in the default case, and with siunitx they need robusity preamble which needs to be documented.

I needed to add \sisetup{detect-all = true}

We can document this also.

The only thing left is the automatic choice of the S column type. As far as I can see, the siunitx parameter influences nothing else apart from the column format.

Yes it seems the same braces formatting that is compatible with siunitx is also capable of rendering without it, so this should be the default in the CSS converter.

@moi90
Copy link
Author

moi90 commented Mar 30, 2021

I agree 👍

@attack68
Copy link

attack68 commented Apr 1, 2021

Pull requests 40422 and 40721 are now actively submitted. feel free to review them and to encourage core devs to go through them to get them approved.

@moi90
Copy link
Author

moi90 commented Apr 6, 2021

Great!

#40721 is likely spelling mistake. Which one do you really mean?

@attack68
Copy link

attack68 commented Apr 6, 2021

40731

@moi90
Copy link
Author

moi90 commented Apr 12, 2021

Thanks! I subscribed to the pull requests. Is there anything I can do to speed up the review process?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment