Which tabular packages do which tasks and which packages conflict?

I would like to start with a small list that used to be part of the tables wiki and is now maintained here.

Overview of packages

Basic packages

  • array offers more flexible column formatting; fixes to some spacing issues. An almost "must-use" package.

  • booktabs supports professional looking tables; better vertical spacing; better rules; specifically designed for tables without vertical lines (the norm for publication-quality tables).

  • tabularx provides a column type which expands to fill the specified width of the table.

  • tabulary provides column types which are proportional to the natural width of their contents.

  • multirow lets tabular material span multiple rows.

  • dcolumn creates columns which align on a decimal marker. Similar packages: numprint, rccol, warpcol. Cf. also siunitx below.

  • tabularht sets the tabular with a specified height.

Multi-page tables

  • longtable provides tabulars that can split across pages.

  • ltxtable combines features of longtable and tabularx.

  • ltablex also combines features of longtable and tabularx.

  • supertabular provides tabulars that can split across multiple pages.

  • xtab extends supertabular by some features and improves page breaking.

  • xltabular improves the behavior of ltablex and combines xtabular convenience with longtable.

Captioning and notes

  • threeparttable typesets tables with captions and notes matching width.

  • threeparttablex provides the functionality of threeparttable to tables created using longtable.

  • floatrow (although mainly about customizing layouts of float environments) allows for footnotes and additional explanations in tables.

  • ctable allows notes/footnotes below tables and figures with the use of a command instead of an environment.

Science

  • siunitx (although mainly about typesetting values with units) provides the S column type that aligns on a decimal mark.

Color and fancy features

  • colortbl is intended for colored rows/columns/cells. The xcolor package with the table option provides alternating table row colors to extend it.

  • arydshln can print horizontal and vertical dashed lines.

  • delarray adds delimiters (braces, parentheses, brackets) to arrays.

  • bigdelim inserts variable-sized multi-row delimiters into a table.

  • blkarray splits arrays into blocks and add delimiters for each block.

  • makecell multiple line cells, better headers, gape in cells, numbered rows, thick lines, diagonally divided cells, etc.

  • diagbox diagonally divided tabular cell.

  • hhline better double line producing.

  • tabularkv adds a key value interface for tabular properties.

All-rounder

  • tabu is a single package that provides much of the functionality of many of the above packages. It is unmaintained and usage currently not recommended.

Which packages are especially recommendable? A quick guide:

  • array is a universal talent for tuning whole columns by commands
  • tabularx is great for auto-sizing columns
  • booktabs is a must for professional-looking layout
  • longtable is very popular for multi-page tables.

Choose further packages depending on the required features.

Package conflicts

  • xtab and supertabular don't work together. Loading both would cause a conflict. xtab should be preferred, since it's written as an extension to supertabular.

  • According to the manual, arydshln has to be loaded after array, longtable, colortab, and colortbl, respectively. Such a problem occurred in this question: Cannot insert multirow within multicolumn

  • Also, arydshln conflicts with supertabular.

  • ltablex can interfere with tabularx uses in two-column documents (because it uses longtable which cannot simply be put in floats), see there.


cellspace is a very useful package to add, for example, to booktabs. With these two packages, you'll get very fine results:

From the readme of cellspace:

Package cellspace: Ensuring a minimal spacing of table cells.

[...]

This package is intended to allow automatic spacing out of the lines of an array. People often complain about text touching the \hline of a tabular when it is too high or too deep.


Here is a good survey entitled Tables in LaTeX2ε: Packages and Methods which I find very useful.