I've seen several different methods that can be used to make long words not go over the right margin, but all of them have been paragraph-based. I need a solution that can apply to the entire text rather than just a piece of it of at a time. I can live with hyphens, but if it's possible to make lines break on word boundaries, that would be even better.
-
See also errors - Is there really no better solution to "Overfull \hbox" than adding a line break? - TeX - LaTeX Stack Exchange – user202729 Jan 06 '22 at 16:34
3 Answers
I guess I'm a little unsure which question you're asking: how to disable hyphens, or how to prevent words running into the margins.
When LaTeX lets words flow into the right margin, it reports a "overfull hbox", and produces a warning. This is its way of telling you that it cannot find a paragraph layout that meets its own fussy typography rules, which puts limits to how far it's willing to stretch words apart to retain full justification. It's sort of its way into annoying you into considering rewording the paragraph to make it more attractive typographically. But especially if this is not the final version, you may not care. You can make it less fussy by putting:
\sloppy
Or as sparhawk suggests in the comments:
\emergencystretch 3em
right after \begin{document}, and then you'll see far fewer words spill into the margin -- probably none. For a normal document, it should apply to the whole document, unless you disable it, or contain it inside braces, etc.
Disabling hyphens and forcing wrapping at word boundaries will make it more likely, not less, for there to be bad hboxes which would make words spill into the margins, since it increases how much space it may need to insert. However, if you want to disable hyphenation through the document, try putting:
\usepackage[none]{hyphenat}
in the preamble.
- 145
- 41,473
-
1
-
21N.B. this answer suggests that
\sloppyoften produces bad results, and it's often preferable to use\emergencystretch 3eminstead. – Sparhawk Apr 06 '17 at 03:20 -
2@Sparhawk
\emergencystretch 3emworked a treat for me, thanks for the suggestion. You could post this as an answer. – Ébe Isaac Sep 14 '17 at 08:03 -
The accepted answer suggests \sloppy. However, as per this related answer, \sloppy can produce imperfect results, and it's often preferable to use \emergencystretch 3em instead.
Please have a look at the linked answer for some excellent visual examples on how the latter is a better solution.
- 494
- 1
- 6
- 13
-
1
\emergencystretchdoesn't fix all my overflowed words, but\sloppydoes. Maybe 3em isn't enough for me but I don't know what value would be best, turned out\sloppyjust easier for lazy me. – Mzq Feb 13 '19 at 06:00
In general, there's no way to keep arbitrary text justified and constrain interword spacing. frabjous suggested \sloppy which relaxes the interword space constraints.
Another solution is to give up on justified text. Using \raggedright or the better \RaggedRight from the ragged2e package is another solution. The latter gives better text since it is more likely to hyphenate. Of course, if you don't want hyphenation, the former is better.
- 62,639