Next: , Up: Boxes   [Contents][Index]


20.1 \mbox & \makebox

Synopsis, one of:

\mbox{text}
\makebox{text}
\makebox[width]{text}
\makebox[width][position]{text}

Create a box, a container for material. The text is typeset in LR mode (see Modes) so it is not broken into lines. The \mbox command is robust, while \makebox is fragile (see \protect).

Because text is not broken into lines, you can use \mbox to prevent hyphenation. In this example, LaTeX will not hyphenate the table name, ‘T-4’.

See Table~\mbox{T-4}

The first two command versions, \mbox and \makebox, are roughly equivalent. They create a box just wide enough to contain the text. (They are like plain TeX’s \hbox.)

In the third version the optional argument width specifies the width of the box. Note that the space occupied by the text need not equal the width of the box. For one thing, text can be too small; this creates a full-line box

\makebox[\linewidth]{Chapter Exam}

with ‘Chapter Exam’ centered. But text can also be too wide for width. See the example below of zero-width boxes.

In the width argument you can use the following lengths that refer to the dimension of the box that LaTeX gets on typesetting text: \depth, \height, \width, \totalheight (this is the box’s height plus its depth). For example, to make a box with the text stretched to double the natural size you can say this.

\makebox[2\width]{Get a stretcher}

For the fourth command version the optional argument position gives position of the text within the box. It may take the following values:

c

The text is centered (default).

l

The text is flush left.

r

Flush right.

s

Stretch the interword space in text across the entire width. The text must contain stretchable space for this to work. For instance, this could head a press release: \noindent\makebox[\textwidth][s]{\large\hfil IMMEDIATE\hfil RELEASE\hfil}

A common use of \makebox is to make zero-width text boxes. This puts the value of the quiz questions to the left of those questions.

\newcommand{\pts}[1]{\makebox[0em][r]{#1 points\hspace*{1em}}}
\pts{10}What is the air-speed velocity of an unladen swallow?

\pts{90}An African or European swallow?

The right edge of the output ‘10 points ’ (note the ending space) will be just before the ‘What’ (note the space after ‘points’). You can use \makebox similarly when making graphics, such as in TikZ or Asymptote, where you put the edge of the text at a known location, regardless of the length of that text.

For boxes with frames see \fbox & \framebox. For colors see Colored boxes.

There is a related version of \makebox that is used within the picture environment, where the length is given in terms of \unitlength (see \makebox (picture)).

If you put a double-backslash into text then LaTeX will not give you a new line; for instance \makebox{abc def \\ ghi} outputs ‘abc defghi’ while \makebox{abc def \par ghi} outputs ‘abc def ghi’, but neither go to a second line. To get multiple lines see \parbox and minipage.


Unofficial LaTeX2e reference manual