tabbing (LaTeX2e unofficial reference manual (November 2018))

Next: table, Previous: quotation & quote, Up: Environments [Contents][Index]

### 8.21 `tabbing`

Synopsis:

    \begin{tabbing}
    row1col1 \= row1col2 ...  \\
    row2col1 \> row2col2 ...  \\
    ...
    \end{tabbing}

Align text in columns, by setting tab stops and tabbing to them much as was done on a typewriter. This is less often used than the environments `tabular` (see tabular) or `array` (see array) because in those the width of each column need not be constant and need not be known in advance.

This example has a first line where the tab stops are set to explicit widths, ended by a `\kill` command (which is described below):

    \begin{tabbing}
    \hspace{0.75in}     \= \hspace{0.40in}  \= \hspace{0.40in}    \kill
    Ship                \> Guns             \> Year    \\
    \textit{Sophie}     \> 14               \> 1800    \\
    \textit{Polychrest} \> 24               \> 1803    \\
    \textit{Lively}     \> 38               \> 1804    \\
    \textit{Surprise}   \> 28               \> 1805    \\
    \end{tabbing}

Both the `tabbing` environment and the more widely-used `tabular` environment put text in columns. The most important distinction is that in `tabular` the width of columns is determined automatically by LaTeX, while in `tabbing` the user sets the tab stops. Another distinction is that `tabular` generates a box, but `tabbing` can be broken across pages. Finally, while `tabular` can be used in any mode, `tabbing` can be used only in paragraph mode and it starts a new paragraph.

A `tabbing` environment always starts a new paragraph, without indentation. Moreover, as shown in the example above, there is no need to use the starred form of the `\hspace` command at the beginning of a tabbed row. The right margin of the `tabbing` environment is the end of line, so that the width of the environment is `\linewidth`.

The `tabbing` environment contains a sequence of tabbed rows. The first tabbed row begins immediately after `\begin{tabbing}` and each row ends with `\\` or `\kill`. The last row may omit the `\\` and end with just `\end{tabbing}`.

At any point the `tabbing` environment has a current tab stop pattern, a sequence of n > 0 tab stops, numbered 0, 1, etc. These create n corresponding columns. Tab stop 0 is always the left margin, defined by the enclosing environment. Tab stop number i is set if it is assigned a horizontal position on the page. Tab stop number i can only be set if all the stops 0, …, i-1 have already been set; normally later stops are to the right of earlier ones.

By default any text typeset in a `tabbing` environment is typeset ragged right and left-aligned on the current tab stop. Typesetting is done in LR mode (see Modes).

The following commands can be used inside a `tabbing` environment. They are all fragile (see \protect).

`\\ (tabbing)`

  End a tabbed line and typeset it.

`\= (tabbing)`

  Sets a tab stop at the current position.

`\> (tabbing)`

  Advances to the next tab stop.

`\<`

  Put following text to the left of the local margin (without changing the margin). Can only be used at the start of the line.

`\+`

  Moves the left margin of the next and all the following commands one tab stop to the right, beginning tabbed line if necessary.

`\-`

  Moves the left margin of the next and all the following commands one tab stop to the left, beginning tabbed line if necessary.

`\' (tabbing)`

  Moves everything that you have typed so far in the current column, i.e., everything from the most recent `\>`, `\<`, `\'`, `\\`, or `\kill` command, to the previous column and aligned to the right, flush against the current column’s tab stop.

`\` (tabbing)`

  Allows you to put text flush right against any tab stop, including tab stop 0. However, it can’t move text to the right of the last column because there’s no tab stop there. The `\`` command moves all the text that follows it, up to the `\\` or `\end{tabbing}` command that ends the line, to the right margin of the `tabbing` environment. There must be no `\>` or `\'` command between the `\`` and the `\\` or `\end{tabbing}` command that ends the line.

`\a (tabbing)`

  In a `tabbing` environment, the commands `\=`, `\'` and `\`` do not produce accents as usual (see Accents). Instead, use the commands `\a=`, `\a'` and `\a``.

`\kill`

  Sets tab stops without producing text. Works just like `\\` except that it throws away the current line instead of producing output for it. Any `\=`, `\+` or `\-` commands in that line remain in effect.

`\poptabs`

  Restores the tab stop positions saved by the last `\pushtabs`.

`\pushtabs`

  Saves all current tab stop positions. Useful for temporarily changing tab stop positions in the middle of a `tabbing` environment.

`\tabbingsep`

  Distance of the text moved by `\'` to left of current tab stop.

This example typesets a Pascal function:

    \begin{tabbing}
    function \= fact(n : integer) : integer;\\
             \> begin \= \+ \\
                   \> if \= n > 1 then \+ \\
                            fact := n * fact(n-1) \- \\
                      else \+ \\
                            fact := 1; \-\- \\
                end;\\
    \end{tabbing}

The output looks like this.

    function fact(n : integer) : integer;
             begin
                   if n > 1 then
                      fact := n * fact(n-1);
                   else
                      fact := 1;
             end;

This example is just for illustration of the environment. To actually typeset computer code in typewriter like this, a verbatim environment (see verbatim) would normally be best. For pretty-printed code, there are quite a few packages, including `algorithm2e`, `fancyvrb`, `listings`, and `minted`.

Unofficial LaTeX2e reference manual