-
-
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} |
You made a comment about doing away with .render(latex=True)
and just using to_latex
. I think this has some merit so I will investigate that option - there might be some hidden consequences, though.
If
Styler.to_latex
gains asiunitx: bool
flag to render numerical columns asS
, this could also introduce a comment in the generated output to remind the user that they has to include these packages and and options.
I would prefer well documented treatment of siunitx=True
option rather than to produce a permanent comment. I firmly believe in the user understanding the use of options, if they elect to turn them on.
AFAIK,
multicol
has nothing to do with tables, it provides multiple text columns per page.multirow
is required, seeDataFrame.to_latex
.
I read somewhere it was required for something, but I can't quite remember exactly what for, need to test this out.
Ok so I now have the development goals:
- adjust my original PR to expand the
--wrap
options so that 'the LaTeX Styler' has complete flexibility to render anything in any braces format with a LaTeX only command-options format (needed for structuring siunitx). - make the default for adding braces around headers in my original PR.
- consider removing .render(latex=True) and relying solely on .to_latex()
- analyse how to alter code for
siunitx
format with a boolean, in just the CSS conversion routine.
Question to you:
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?
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.
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, thesiunitx
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.
I agree 👍
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.
Great!
#40721 is likely spelling mistake. Which one do you really mean?
40731
Thanks! I subscribed to the pull requests. Is there anything I can do to speed up the review process?
None of this is necessary, if a user is not using
siunitx
.booktabs
is strongly recommended (e.g. here or here) in any case to make pretty tables and is already required byDataFrame.to_latex
.If
Styler.to_latex
gains asiunitx: bool
flag to render numerical columns asS
, this could also introduce a comment in the generated output to remind the user that they has to include these packages and and options.AFAIK,
multicol
has nothing to do with tables, it provides multiple text columns per page.multirow
is required, seeDataFrame.to_latex
.I agree.
To the best of my knowledge,
siunitx
is the de-facto standard to format numbers in LaTeX. A quick Google search yielded nothing comparable (except for the predecessorsiunit
). For all other commands that might be used in a table, it shouldn't make a difference if something is between braces or not.Generally, if a user wants to use
siunitx
, they will know that they needs to use extra commands.I can't predict what might be requested :)
tabularx
/tabulary
could be candidates (but I personally will not endorse them).booktabs
andmultirow
are already required.