Search code examples
latexnumber-formattingtabularunits-of-measurement

White space in siunitx columns


I am trying to format a table of numbers with units using the siunitx package to align the numbers on the decimal.

I am having trouble controlling the amount of white space that siunitx is allocating to the display of numbers.

Here is an example. I would like the numbers in the first column to be closer to the right, as they are in the third column, and I would like there to be less space on the left of numbers in the third column. (The vertical lines are ugly, I know, but they show the column widths.)

\documentclass[10pt,a4paper]{article}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{|S|r|S|r|}
\multicolumn{2}{c}{Range} & \multicolumn{2}{c}{Readout}  \\
\hline 
10 & mV &   0.000049 & mV  \\
100 & V &   0.00007   & mV \\
\end{tabular} 
\end{document}

enter image description here

EDIT As a continuation of this question, I am trying to find a way to report numbers and units in the same column, with a single (or at least uniform) space between them. But again whitespace is hard to control. For example,

\begin{tabular}{
S|
S|
S[table-format=1.9]
}
{Range} & {Readout} & {Uncertainty}  \\
\hline 
10 {mV} &   0.000022~{mV}  & 0.000069 {mV}\\
100 {mV} &   -0.00001~{mV}  & 0.00011 {mV}\\
1 {V} &   -0.0000007~{V}  & 0.00000029 V\\
10 {V} &   -0.000007~{V}  & 0.0000029 V\\
100 {V} &   -0.000075~{V}  & 0.000058 V\\
\end{tabular} 

which produces this

enter image description here

Here, in the first column, space is inserted after the numbers depending on how big the mantissa is; in the second column there is too much white space on the left of the numbers; in the third column, the space between the number and unit allows for a certain number of digits.

Also, the use of ~ in the second column seems necessary. Without it, the text is joined directly to the number. I have played with table-align-text-post and -pre, as described in the siunitx docs, but they don't seem to work here. I thought they would.


Solution

  • You can specify how many digits are before and after the decimal marker. The syntax is table-format=<digits before marker>.<digits after the marker>

    \documentclass[10pt,a4paper]{article}
    \usepackage{siunitx}
    \begin{document}
    \begin{tabular}{|S[table-format=3.0]|r|S[table-format=1.6]|r|}
    \multicolumn{2}{c}{Range} & \multicolumn{2}{c}{Readout}  \\
    \hline 
    10 & mV &   0.000049 & mV  \\
    100 & V &   0.00007   & mV \\
    \end{tabular} 
    \end{document}
    

    enter image description here