Warning: what's below is more of a tongue-in-cheek answer, but not without a shred of truth in it!
\halign
& \valign
Pro
- It's what you'd eventually get with the other packages (most likely) anyways
- format agnostic – it's a TeX primitive
- Once you grok it, you'll be able to produce typographically beautiful tables more easily, and, on the other hand,
- creating typographically ugly tables is difficult
Contra
- there's a learning curve
- creating typographically ugly tables is difficult
;-)
To expand a little, to think about what one is doing when inputting tabular data is that, if, for example, one is working on a spreadsheet program, what you are mentally doing is that every time you want to express that you want to move on to the next horizontal cell you press tab
, and every time you want to move to the next row you press enter
.
Now, if you just input &
instead of tab
, and \cr
instead of enter
, you can skip all the intermediary steps. That is, converting the spreadsheet program generated chunk into tabular
(or whatever), and then expanding that out to a \halign
.
Similarly, by the time that you've navigated with your mouse through the various menus in the spreadsheet program to express that you want a particular cell to span, say, three columns (this would almost always mean that you are working on a “header” cell), you would have already written \multispan3
.
I can already see that I'm writing myself into a corner here, what with the various arguments for cell background colors, cells spanning multiple rows, cells containing vertical mode material, and what have you. So I'm just going to say a sweeping statement about all those things being “bad typography”. ;-)
.
Hold on, there's a lynch mob knocking on my door…
What I mean is that if you find yourself doing any of the above, more often than not, chances are that you are complicating the information you want to communicate with your table. And that's basically what the word “bad typography” means.
So one strong argument still remains: to visually see the structure of the table, be it in raw text (like in the orgmode
answer, vim
s equivalent, or in the various Markdown extensions), or in graphical programs (like in spreadsheet programs).
This could again be just a s/<colsepchar>/\&/g
and s/<rowsepchar>/\\cr/
, in whatever chunk you get out from the program of your choice. Like, not a big deal at all. Or alternatively on the TeX side of things, some \catcode
madness could take place. Given that the table is simple enough, i.e., not complicating the information you want to communicate with it.
So, given this context and background, I hope my initial joke's not lost on anyone and this answer could happily live in this question! ;-)
\begin{tabular}...\end{tabular}
with something sensible inside is welcome here. I'm not asking for how to produce this-and-that output in LaTeX, I guess this has been covered enough on TeX.SX and elsewhere.booktabs
provides. However, sometimes these tableaux (as thebooktabs
documentation calls tables with inter-cell rules) are useful.