## B.10 Lining It Up in Columns

- The tabbing Environment
- The array and tabular environments

### B.10.1 The tabbing Environment

Limited support is offered. The tabbing environment translate to a flexible tabular-like environment. Inside this environment, the command `\kill` ends a row, while commands `\=` and `\>` start a new column. All other tabbing commands do not even exist.

### B.10.2 The array and tabular environments

These environments are supported, using html `table` element, rendering is satisfactory in most (not too complicated) cases. By contrast with LATEX, some of the array items always are typeset in display mode. Whether an array item is typeset in display mode or not depends upon its column specification, the `l`, `c` and `r` specifications open display mode while the remaining `p` and `@` do not. The `l`, `c`,`r` and `@` specifications disable word wrap, while the `p` specification enables it.

Entries in a column whose specification is `l` (resp. `c` or `r`) get left-aligned (resp. centered or right-aligned) in the horizontal direction. They will get top-aligned in the vertical direction if there are other column specifications in the same array that specify vertical alignment constraints (such as `p{`wd`}`, see below). Otherwise, vertical alignment is unspecified.

Entries in a column whose specification is `p{`wd`}` get left-aligned in the horizontal direction and top-aligned in the vertical direction and a paragraph break reduces to one line break inside them. This is the only occasion where HEVEA makes a distinction between LR-mode and paragraph mode. Also observe that the length argument wd to the `p` specification is ignored.

Some LATEX array features are not supported at all:

- Optional arguments to `\begin{array}` and `\begin{tabular}` are ignored.
- The command `\vline` does not exists.

Some others are partly rendered:

- Spacing between columns is different.
- `@` formatting specifications in `\multicolumn` argument are ignored.
- If a `|` appears somewhere in the column formatting specification, then the array is shown with borders.
- The command `\hline` does nothing if the array has borders (see above). Otherwise, an horizontal rule is outputted.
- The command `\cline` ignores its argument and is equivalent to `\hline`.
- Similarly the command `\extracolsep` issues a warning and ignores its argument.

Additionally, the `tabular*` environment is recognised and gets rendered as an html table with an advisory width attribute.

By default, HEVEA implements the array package (see [LATEX-bis, Section 5.3] and section B.17.2 in this document), which significantly extends the `array` and `tabular` environments.