The other answers here address how to use \hspace
at the beginning of the line via the \hspace*
.
An alternate way of inserting spaces of an appropriate width is to use \phantom{}
which will take up as much space as would be required by the parameter passed to it. This will adapt more easily to cases where the amount of space you are trying to insert is not just an integer multiple of 1ex
/1em
.
As barbarabeeton: mentions em
should be used for horizontal spaces, and ex
for vertical ones. A good reference is Which measurement units should one use in LaTeX?.
\documentclass[border=5pt]{standalone}
\begin{document}
\texttt{\noindent
x\hspace{3ex}y
\newline\noindent
\phantom{x}\hspace{3ex}y
}
\end{document}
Spaces (glues and kerns) disappear after line breaks by rule; by the same rule, line breaks can happen only at the "left edge" of a space. Moreover, if one says \hspace{1cm}\hspace{1cm}
, the first \hspace
is a feasible break point, but not the second one.
This is how TeX attains alignment to the left margin for normal and ragged right paragraphs (ragged left uses a different feature).
More precisely, a glue (\hspace
) can be chosen as break point only if it is preceded by a non discardable item (most commonly a character or a rule). Among discardable items are penalties.
In some cases one wants to have spaces that don't disappear at line breaks: for instance blanks that should filled by hand in an exercise. Thus LaTeX provides the \hspace*
variant.
When \hspace*{1cm}
is called, LaTeX uses the internal command \@hspacer
, which does
\vrule width 0pt \nobreak \hskip 1cm \hskip 0pt plus 0pt minus 0pt
\vrule width 0pt
places an invisible object that takes up no space;
\nobreak
sets a point where line breaking is impossible, by issuing a very large penalty;
\hskip 1cm
cannot be used as a break point, because it is preceded by a discardable item (the penalty);
\hskip 0pt plus 0pt minus 0pt
is inserted to avoid possible problems due to the peculiar syntax of the primitive \hskip
; it won't be a feasible break point, because it's preceded by a discardable item;
Thus \hspace*{1cm}
forms, so to speak, an indivisible unit that will never be taken as a break point, nor will disappear at line breaks.
A consequence of this rules is that a space after \hskip*{1cm}
cannot be used as break point.
Suppose we want to define a \blank
macro for leaving space to be later filled in by hand:
\documentclass{article}
\newcommand{\blank}[1]{\hspace*{#1}}
\begin{document}
\parbox{4cm}{
Some text to see what's going on: \blank{2cm} and \blank{3cm} with text after them
}
\end{document}
The result will be
(where the rules represent the \hspace*{...}
commands; they won't be printed by this command, I used them just to show the effect). You can see that the space after \blank{...}
is not used as break point.
With a different definition, the blanks can appear at the end of the line:
\documentclass{article}
\newcommand{\blank}[1]{\hspace*{#1}\linebreak[0]}
\begin{document}
\parbox{4cm}{
Some text to see what's going on: \blank{2cm} and \blank{3cm} with text after them
}
\end{document}
will result in
Of course the typesetting here is suboptimal, but the point is to show how the thing works.
The \linebreak[0]
command just inserts a feasible break point, without stating any particular preference for it.
For the interested readers, the "rule" effect for showing \hspace*
has been obtained with the following trick:
\let\TeXhskip\hskip
\def\hskip{\leaders\hrule\TeXhskip}
Best Answer
In order to use
mu
units you need\mskip
or\mkern
.If you load
amsmath
you have\mspace
, that's preferable to\mskip
in the same way\hspace
is preferable to\hskip
.There is a fundamental difference between
\hskip
and\mskip
: the latter uses the em relative to the symbol font in the current style (so it will be smaller in subscripts, for instance). In view of this there is no conversion formula, unless you want to use\mathchoice
that, in this case, would be too much business for a small thing.