booktabs

LaTeX booktabs/tabularx/multirow/longtable packages for professional tables. Use when helping users create well-formatted tables, multi-page tables, or improve table appearance.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "booktabs" with this command: npx skills add igbuend/grimbard/igbuend-grimbard-booktabs

booktabs + tabularx + multirow + longtable — Professional Tables

CTAN: https://ctan.org/pkg/booktabs | https://ctan.org/pkg/tabularx
Manual: texdoc booktabs

Setup

\usepackage{booktabs}    % professional horizontal rules
\usepackage{tabularx}    % auto-width columns
\usepackage{multirow}    % cells spanning rows
\usepackage{longtable}   % multi-page tables
\usepackage{colortbl}    % colored rows/cells (optional)
\usepackage{siunitx}     % number alignment (optional)

Ugly vs Professional — Before/After

❌ Bad Table

\begin{tabular}{|l|c|r|}
\hline
Name & Score & Grade \\ \hline
Alice & 95 & A \\ \hline
Bob & 82 & B \\ \hline
Carol & 78 & C \\ \hline
\end{tabular}

✅ Good Table

\begin{tabular}{lcc}
\toprule
Name  & Score & Grade \\
\midrule
Alice & 95    & A \\
Bob   & 82    & B \\
Carol & 78    & C \\
\bottomrule
\end{tabular}

Rules: Never use vertical lines. Never use \hline. Use \toprule, \midrule, \bottomrule.

booktabs Rules

CommandUse
\topruleTop of table (thicker)
\midruleBetween header and body
\bottomruleBottom of table (thicker)
\cmidrule(lr){2-4}Partial rule spanning columns 2–4
\addlinespaceExtra vertical space (group separator)
\addlinespace[5pt]Custom extra space

cmidrule Trimming

\cmidrule(l){1-2}   % trim left
\cmidrule(r){3-4}   % trim right
\cmidrule(lr){2-3}  % trim both
\cmidrule{1-4}      % no trim

Grouped Rows Example

\begin{tabular}{llr}
\toprule
Category & Item   & Price \\
\midrule
Fruit    & Apple  & 1.20 \\
         & Banana & 0.80 \\
\addlinespace
Dairy    & Milk   & 2.50 \\
         & Cheese & 4.00 \\
\bottomrule
\end{tabular}

tabularx — Auto-Width Columns

% X columns expand to fill \textwidth
\begin{tabularx}{\textwidth}{lXr}
\toprule
ID & Description & Price \\
\midrule
1  & A very long description that will wrap automatically & \$10 \\
2  & Short & \$20 \\
\bottomrule
\end{tabularx}
Column typeBehavior
l, c, rFixed (natural width)
XExpands to fill remaining space (left-aligned)
>{\centering\arraybackslash}XCentered X column
>{\raggedleft\arraybackslash}XRight-aligned X column
p{3cm}Paragraph, fixed width

multirow

\usepackage{multirow}

\begin{tabular}{lcr}
\toprule
\multirow{2}{*}{Name} & \multicolumn{2}{c}{Scores} \\
\cmidrule(l){2-3}
 & Math & English \\
\midrule
Alice & 95 & 88 \\
Bob   & 72 & 91 \\
\bottomrule
\end{tabular}

Syntax: \multirow{nrows}{width}{content} — use * for auto width.

\multicolumn{ncols}{alignment}{content} — built into LaTeX.

Complex Header Example

\begin{tabular}{lcccccc}
\toprule
& \multicolumn{3}{c}{Treatment A} & \multicolumn{3}{c}{Treatment B} \\
\cmidrule(lr){2-4} \cmidrule(lr){5-7}
Subject & Pre & Post & $\Delta$ & Pre & Post & $\Delta$ \\
\midrule
1 & 5.2 & 3.1 & $-2.1$ & 4.8 & 4.5 & $-0.3$ \\
2 & 6.1 & 2.8 & $-3.3$ & 5.5 & 5.2 & $-0.3$ \\
\bottomrule
\end{tabular}

longtable — Multi-Page Tables

\usepackage{longtable}

\begin{longtable}{lcc}
% Header for first page
\toprule
Name & Value & Unit \\
\midrule
\endfirsthead

% Header for continuation pages
\multicolumn{3}{l}{\textit{Continued from previous page}} \\
\toprule
Name & Value & Unit \\
\midrule
\endhead

% Footer for all pages except last
\midrule
\multicolumn{3}{r}{\textit{Continued on next page}} \\
\endfoot

% Footer for last page
\bottomrule
\endlastfoot

% Data rows
Alpha   & 1.0 & m \\
Beta    & 2.5 & kg \\
% ... many more rows ...
Omega   & 9.9 & s \\

\caption{Long experimental data.}
\label{tab:longdata}
\end{longtable}

Note: longtable replaces tabular entirely (not inside table environment). Caption and label go inside.

colortbl — Row and Cell Coloring

\usepackage{colortbl}
\usepackage[table]{xcolor}  % or load xcolor with table option

% Colored row
\rowcolor{blue!10}
Alice & 95 & A \\

% Colored cell
Alice & \cellcolor{green!20} 95 & A \\

% Alternating row colors (xcolor table option)
\rowcolors{2}{gray!10}{white}  % start at row 2, alternate
\begin{tabular}{lcc}
\toprule
\rowcolor{white}  % override for header
Name & Score & Grade \\
\midrule
Alice & 95 & A \\  % gray
Bob & 82 & B \\    % white
Carol & 78 & C \\  % gray
\bottomrule
\end{tabular}

siunitx S Columns — Number Alignment

\usepackage{siunitx}

\begin{tabular}{l S[table-format=3.2] S[table-format=1.3]}
\toprule
{Material} & {Density} & {Error} \\
\midrule
Steel      & 785.00    & 0.050 \\
Aluminum   & 270.00    & 0.120 \\
Titanium   & 450.00    & 0.008 \\
Gold       & 1932.00   & 0.300 \\
\bottomrule
\end{tabular}

S column: Aligns numbers by decimal point. Wrap text headers in {...}.

S optionExampleMeaning
table-format3.23 digits . 2 decimals
table-format+2.1e3sign, digits, exponent
round-modeplacesRound to decimal places
round-precision2Number of decimal places

Full Example — Publication-Quality Table

\begin{table}[htbp]
  \centering
  \caption{Performance comparison of algorithms.}
  \label{tab:comparison}
  \begin{tabular}{l S[table-format=2.1] S[table-format=3.0] c}
    \toprule
    {Method} & {Accuracy (\%)} & {Time (ms)} & {Converged?} \\
    \midrule
    Baseline   & 72.3 & 150 & Yes \\
    Improved   & 85.1 & 230 & Yes \\
    Proposed   & 91.7 &  98 & Yes \\
    \addlinespace
    Oracle     & 99.2 &  45 & N/A \\
    \bottomrule
  \end{tabular}
\end{table}

Common Pitfalls

ProblemCauseFix
Vertical linesUsing `` in column spec
\hlineOld habitUse \toprule/\midrule/\bottomrule
Table too wideToo many columnsUse tabularx with X columns, or \resizebox
longtable in tableIncompatiblelongtable replaces table environment
\multirow misalignedRow height differencesAdd \rule{0pt}{2.5ex} or adjust manually
S column header errorText in S columnWrap header in {...}
Footnotes in table\footnote fails in tabularUse \tablefootnote (tablefootnote pkg) or threeparttable
booktabs + colortbl gapsRules have gaps with colorAdd \abovetopsep=0pt or use \arrayrulecolor

Tips

  • Three rules only: \toprule, \midrule, \bottomrule — almost never need more
  • Use \addlinespace to group rows visually instead of extra rules
  • Put \caption above the table (convention for tables, unlike figures)
  • \small or \footnotesize before tabular to shrink wide tables
  • threeparttable package for proper table footnotes
  • \arraystretch to adjust row height: \renewcommand{\arraystretch}{1.2}

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

tikz

No summary provided by upstream source.

Repository SourceNeeds Review
General

latex

No summary provided by upstream source.

Repository SourceNeeds Review
General

pgfplots

No summary provided by upstream source.

Repository SourceNeeds Review
General

ethical-hacking-ethics

No summary provided by upstream source.

Repository SourceNeeds Review