Lengths, Spaces and Boxes
Author: Luc Maranget

## B.13 Lengths, Spaces and Boxes

- Length
- Space
- Boxes

### B.13.1 Length

All length commands are ignored, things go smoothly when LATEX syntax is used (using the `\newlength`, `\setlength`, etc. commands, which are null macros). Of course, if lengths are really important to the document, rendering will be poor.

Note that TEX length syntax is not at all recognised. As a consequence, writing things like `\textwidth=10cm` will clobber the output. Users can correct such misbehaviour by adopting LATEX syntax, here they should write `\setlength{\textwidth}{10cm}`.

### B.13.2 Space

The `\hspace`, `\vspace` and `\addvspace` spacing commands and their starred versions recognise positive explicit length arguments. Such arguments get converted to a number of non-breaking spaces or line breaks. Basically, the value of `1em` or `1ex` is one space or one line-break. For other length units, a simple conversion based upon a 10pt font is used.

HEVEA cannot interpret more complicated length arguments or perform negative spacing. In these situations, a warning is issued and no output is done.

Spacing commands without arguments are recognised. The `\enspace`, `\quad` and `\qquad` commands output one, two and four non-breaking spaces, while the `\smallskip`, `\medskip` and `\bigskip` output one, one, and two line breaks.

Stretchable lengths do not exist, thus the `\hfill` and `\vfill` macros are undefined.

### B.13.3 Boxes

Box contents is typeset in text mode (i.e. non-math and non-display mode). Both LATEX boxing commands `\mbox` and `\makebox` commands exist. However `\makebox` generates a specific warning, since HEVEA ignore the length and positioning instructions given as optional argument.

Similarly, the boxing with frame `\fbox` and `\framebox` commands are recognised and `\framebox` issues a warning. When in display mode, `\fbox` frames its argument by enclosing it in a table with borders. Otherwise, `\fbox` calls the `\textfbox` command, which issues a warning and typesets its argument inside a `\mbox` (and thus no frame is drawn). Users can alter the behaviour of `\fbox` in non-display mode by redefining `\textfbox`.

Boxes can be saved for latter usage by storing them in bins. New bins are defined by `\newsavebox{`cmd`}`.

Then some text can be saved into cmd by `\sbox{`cmd`}{`text`}` or `\begin{lrbox}{`cmd`}` text `\end{lrbox}`. The text is translated to html, as if it was inside a `\mbox` and the resulting output is stored. It is retrieved (and outputted) by the command `\usebox{`cmd`}`. The `\savebox` command reduces to `\sbox`, ignoring its optional arguments.

The `\rule` commands translate to a html horizontal rule (`<HR>`) regardless of its arguments.

All other box-related commands do not exist.