53

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.

69

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

right after \begin{document}, and then you'll see far less 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.

  • You answered both questions! Thanks, and sorry for being so vague. :\ – Rayne Jan 17 '11 at 12:25
  • 8
    N.B. this answer suggests that \sloppy often produces bad results, and it's often preferable to use \emergencystretch 3em instead. – Sparhawk Apr 6 '17 at 3:20
  • 1
    @Sparhawk \emergencystretch 3em worked a treat for me, thanks for the suggestion. You could post this as an answer. – Ébe Isaac Sep 14 '17 at 8:03
  • @ÉbeIsaac Good point. I've added an answer. – Sparhawk Sep 14 '17 at 11:10
14

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.

  • Really great differentiation on the naming scheme there... ;-) – Rikki May 14 '15 at 23:28
9

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.

  • \emergencystretchdoesn't fix all my overflowed words, but \sloppy does. Maybe 3em isn't enough for me but I don't know what value would be best, turned out \sloppy just easier for lazy me. – Miranda Feb 13 at 6:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.