194

I've read a couple of questions recently about tabular environments, and it seems there's a whole bunch of packages that do stuff in this field. I'd really like a summary of what each package does, and which conflict.

For example a quick google (plus my memory) got me tabularx, booktabs, multirow, collcell, array, mdwtab, longtable, supertabular...

Which should I be using for what purposes? And more importantly, which conflict?

[Should this be CW? One package per answer sort of thing?]

5
  • I agree with you that this question should be CW, as I assume there's not a single answer but many users may freely contribute their knowledge and experience. So I converted it to CW.
    – Stefan Kottwitz
    Commented Mar 4, 2011 at 18:11
  • Such questions are usually answered by reading (the abstracts in) the manuals of the mentioned packages. Commented Mar 5, 2011 at 9:23
  • 1
    @Thorsten Good point. I've changed the emphasis of the question. What the abstracts won't tell you is which packages conflict
    – Seamus
    Commented Mar 5, 2011 at 11:43
  • 9
    @Thorsten, @Seamus: I don't see the point. It's a great question, Seamus, and it's very valuable to have this overview here since that's a lot quicker to look through than a bunch of (abstracts of) manuals. Commented Mar 5, 2011 at 22:27
  • 6
    I just saw this question because it had been bumped up for some reason. I thought "huh, that's a great question"... I'd totally forgotten that I had asked it!
    – Seamus
    Commented Jun 23, 2011 at 10:56

3 Answers 3

228
+50

I would like to start with a small list that used to be part of the 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.

  • ragged2e provides \Centering, \RaggedLeft and \RaggedRight, which function like \centering, \raggedleft and \raggedright, but do not disable hyphenation and thus produce smoother margins, especially for narrow columns. This package was previously called raggedright.

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 tabularx convenience with longtable.

  • The tabularray package (see below) provides a longtblr environment.

  • The (unmaintained) tabu package (see below) provides a longtabu environment.

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.

  • ltcaption allows to fix caption problems for left or right aligned longtables.

  • fr-longtable (externalized subpackage of floatrow) provides longtable with additional commands \endlasthead (last head of longtable) and \endprelastfoot (foot on the page before last).

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.

  • colortab is the predecessor of colortbl above which was more or less superseded by it, but can still find some use (e.g. when using plain TeX).

  • 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. slashbox is the predecessor of this package which was superseded by it. Note that nicematrix (see below) provides \diagbox that also does a good job.

  • hhline allows to properly render the points of intersection between vertical and horizontal lines (à la Norton Commander and similar DOS pseudographics).

  • tabularkv allows to choose between tabular*, tabularx and tabularht and also set their properties using a more organic "key=value" syntax.

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.

  • tabularray is a new LaTeX3 package that provides much of the functionality of tabu package. It is an alternative for the outdated tabu package.

  • nicematrix is a LaTeX3 package which constructs matrices and tabulars based on standard environments of LaTeX, array and amsmath but constructs also PGF/TikZ nodes under the cells, rows and columns. The final user can use these nodes directly with TikZ but the package provides also functionalities (using these nodes under the hood) for colored rectangles, rules, exterior row and columns, continuous dotted lines in the matrices, etc. It is compatible with booktabs but not with longtable.


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.

10
  • @lockstep and @Alan Munn contributed most of that nice list in the tag wiki, which has been the start. @Alan Munn: Sorry, didn't see this first, when I checked just the excerpt history instead of the main one, and {tabular} is gone.
    – Stefan Kottwitz
    Commented Mar 4, 2011 at 21:14
  • Alan Munn did most of the work -- I only contributed a little copying and pasting.
    – lockstep
    Commented Mar 4, 2011 at 23:50
  • Brilliant. Thanks for the work guys! Perhaps to make this question more than just a copy of the tag wiki, let's make it about which tabular packages conflict.
    – Seamus
    Commented Mar 5, 2011 at 11:44
  • I'd submit my package to "Multi-page tables": cals: Multi-page tables with spanned cells and decorations
    – olpa
    Commented Jun 21, 2013 at 13:50
  • 1
    @n4pK Thanks, done!
    – Stefan Kottwitz
    Commented Jan 12, 2020 at 16:44
10

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.

7

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .