Crafting Professional Tables in LaTeX with booktabs & siunitx

Keywords: booktabs, siunitx, tables, alignment, units, decimals, whitespace, column types, multirow

Tables are the backbone of technical documents—conveying numerical data, comparing metrics, and summarizing results. Yet standard LaTeX tabular environments often produce cramped spacing, inconsistent rules, and manual unit formatting headaches. By combining the booktabs package for elegant horizontal rules and siunitx for automatic number and unit alignment, you can create publication-quality tables that are both visually appealing and semantically robust. In this post, we’ll walk through eight practical patterns—from minimal setup and column types to complex multi‐row layouts and custom units—complete with ready-to-copy code snippets.

This guide assumes you know basic LaTeX. We’ll cover:

  1. Minimal package configuration
  2. Defining S columns for numeric alignment
  3. Formatting physical units with \si{…}
  4. Custom decimal markers and group separators
  5. Multirow and multicolumn headers
  6. Controlling inter-column spacing
  7. Color-alternating rows
  8. Automating table captions and labels

1. Minimal Setup


\usepackage{booktabs}
\usepackage{siunitx}
\sisetup{
  detect-mode,
  tight-spacing = true,
  table-format = 3.2,
  output-decimal-marker = {.},
}
    

Explanation: Load booktabs before defining your tabular. Configure siunitx for number alignment, decimal marker style, and to inherit document fonts.

2. Numeric Alignment with S Columns


\begin{table}[ht]
  \centering
  \begin{tabular}{l S[table-format=2.1] S[table-format=3.0]}
    \toprule
    {Experiment} & {Value (\,\si{\metre})} & {Count} \\
    \midrule
    A & 1.2  &  12 \\
    B & 10.0 & 100 \\
    C & 0.34 &   5 \\
    \bottomrule
  \end{tabular}
  \caption{Aligned numbers in S-columns.}
\end{table}
    

Explanation: The column specifier S tells siunitx to parse and align numbers on their decimal points. You can override table-format per-column for different precisions.

3. Formatting Units Automatically


\begin{tabular}{l S[table-format=3.1] S}
  \toprule
  {Material} & {Length (\si{\centi\metre})} & {Density (\si{\gram\per\cubic\centi\metre})} \\
  \midrule
  Steel  & 12.3 & 7.85 \\
  Aluminum & 25.0 & 2.70 \\
  Brass  & 18.6 & 8.50 \\
  \bottomrule
\end{tabular}
    

Explanation: Wrap units in \si{…} for consistent spacing and font. siunitx handles prefixes, fractions, and spacing per the SI standard.

4. Custom Decimal Markers & Grouping


\sisetup{
  output-decimal-marker = {,},
  group-separator = {.},
  group-minimum-digits = 4,
}
\begin{tabular}{S[table-format=5.3]}
  \toprule
  {Measurement} \\
  \midrule
  1234.567 \\
  98765.432 \\
  12.000   \\
  \bottomrule
\end{tabular}
    

Explanation: European-style decimals and thousand separators are trivial to set globally or per-table.

5. Multirow & Multicolumn Headers


\usepackage{multirow}
\begin{tabular}{l S[table-format=2.1] S[table-format=2.1]}
  \toprule
  \multirow{2}{*}{Category} & \multicolumn{2}{c}{Results} \\
   & {A (\si{\metre})} & {B (\si{\metre})} \\
  \midrule
  X & 1.2 & 0.8 \\
  Y & 2.3 & 1.5 \\
  \bottomrule
\end{tabular}
    

Explanation: Combine multirow and \multicolumn with booktabs rules for clean, semantically grouped headers.

6. Adjusting Inter-Column Spacing


\setlength{\tabcolsep}{4pt} % reduces default padding
\begin{tabular}{l S S}
  \toprule
  Test & {Value} & {Error} \\
  \midrule
  α & 5.1 & 0.2 \\
  β & 3.4 & 0.1 \\
  \bottomrule
\end{tabular}
    

Explanation: The length \tabcolsep controls half-spacing around each column. Tweak globally or locally inside a group.

7. Alternating Row Colors


\usepackage[table]{xcolor}
\rowcolors{2}{gray!10}{white}
\begin{tabular}{l S S}
  \toprule
  Item & {Mean} & {Std Dev} \\
  \midrule
  P & 1.23 & 0.05 \\
  Q & 2.34 & 0.07 \\
  R & 0.98 & 0.02 \\
  \bottomrule
\end{tabular}
    

Explanation: Use xcolor with the table option and \rowcolors to improve readability in dense tables.

8. Automating Captions & Labels


\newcommand{\TableCaptionLabel}[2]{%
  \caption{#1}\label{tab:#2}%
}
\begin{table}[ht]
  \centering
  \begin{tabular}{l S}
    \toprule
    Metric & {Value} \\
    \midrule
    Accuracy & 98.7 \\
    Precision & 97.5 \\
    \bottomrule
  \end{tabular}
  \TableCaptionLabel{Classification results on test set}{classification-results}
\end{table}
    

Explanation: A custom macro standardizes caption formatting and label prefixes, streamlining cross-referencing.

Why booktabs & siunitx Matter

  • Clarity: Consistent spacing and rules improve legibility.
  • Precision: Automatic number alignment avoids manual hacks.
  • Maintainability: Change a global setup and all tables update.
  • Standards Compliance: SI units and typography conventions handled for you.
Crafting Professional Tables in LaTeX with booktabs & siunitx