Sometimes I want to underline some text, and it extends past the end of a line. Why does \underline{}
not automatically wrap my text for me ?
Also, how can I underline text so that it will still wrap ?
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It only takes a minute to sign up.
Sign up to join this communitySometimes I want to underline some text, and it extends past the end of a line. Why does \underline{}
not automatically wrap my text for me ?
Also, how can I underline text so that it will still wrap ?
In text mode, the \underline
command will enclose its argument in a horizontal box, which doesn't allow linebreaks. Use the \ul
command of the soul
package instead.
\documentclass[12pt]{article}
\usepackage{soul}
\begin{document}
A sentence that is just included to fill the line. \underline{Some text with underlining.}
A sentence that is just included to fill the line. \ul{Some text with underlining.}
\end{document}
EDIT: As for why \underline
works the way it does, see this entry in the UK TeX FAQ for starters. It would seem that Leslie Lamport (the author of LaTeX) implemented just a "quick fix", and that only later package authors came up with more satisfactory solutions for underlining. See sections 2 and 7 of the soul
documentation to get an idea of how complicated things are.
\underline
has this behavior ?
ulem
package with gives \uline
. The package should be loaded with the normalem
option, otherwise the \emph
macro is changed to underline the text.
Apr 17, 2011 at 19:48
\underline
boxes the text using \hbox
, i.e. the primitive version of \mbox
. Both aren't breakable by design. The ulem
package for example avoids this issue by boxing each word separately by searching for the spaces between them. This still doesn't allow for hyphenation.
Apr 17, 2011 at 19:51
soul
package gave me trouble when the underlined text contained cite
. The ulem
package worked better.
Aug 15, 2012 at 21:20
The \ul
command from the soul
package has troubles with Umlauts -- the \uline
command from the ulem
package doesn't and therefore seems to be the better option for those not exclusively writing in English.
ulem
doesn't support automatic hyphenation, so one has to manually hyphenate using \-
with it.
If you're using the LuaTeX engine (or can use it) you could use the lua-ul
package, that allows underlining without any restrictions on the input (unlike soul
) and with fully functioning kerning, hyphenation, etc. (unlike ulem
).
\documentclass[]{article}
\usepackage{lua-ul}
\begin{document}
\begin{minipage}{3cm} % to show automatic hyphenation works
\underLine
{%
This is some text that gets automatically hyphenated
while being under%
}lined.
\end{minipage}
\end{document}
As you can see, hyphenation even works correctly for words not completely inside the argument of \underLine
.