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 ?
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 ?
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 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.
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.
– Skillmon
Apr 20 '21 at 13:39
\uline OR \ul, etc. in your macro to get the intended effect of underlining.
– gagarwa
Mar 21 '23 at 02:11
\ul{\mbox{Ü}} or \ul{\"U} works but they're certainly not very convenient.
– user202729
May 12 '23 at 05:56
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.
\underLine, but doesn't with \underline (lower 'l' in command name)? Is \underline a different command which is not from suggested lua-ul? I'm just curious what's going on.
– Michal Vician
Apr 05 '23 at 13:54
\underline is not part of lua-ul. In LaTeX \underline uses the \underline-primitive in maths mode, and in text mode it's just a thin wrapper around the primitive using a \hbox and as such isn't line breakable.
– Skillmon
Apr 05 '23 at 16:06
\underlinehas this behavior ? – gabkdlly Jan 24 '11 at 10:03ulempackage with gives\uline. The package should be loaded with thenormalemoption, otherwise the\emphmacro is changed to underline the text. – Martin Scharrer Apr 17 '11 at 19:48\underlineboxes the text using\hbox, i.e. the primitive version of\mbox. Both aren't breakable by design. Theulempackage for example avoids this issue by boxing each word separately by searching for the spaces between them. This still doesn't allow for hyphenation. – Martin Scharrer Apr 17 '11 at 19:51soulpackage gave me trouble when the underlined text containedcite. Theulempackage worked better. – Vebjorn Ljosa Aug 15 '12 at 21:20soulfails with inclusion of user-defined macro's as well. – Discrete lizard Feb 18 '18 at 17:48