254

I can't find where I can remove any kind of hyphenation and just have LaTeX just do a line break.

edit: Honestly speaking I just don't like to read hyphenation anywhere and that's the only reason why I wanted to remove it. It is a matter of style, probably unexpected in LaTeX.

The document has only a summary in a different language and I used the language packages to hyphenate properly.

lockstep
  • 250,273
Splashy
  • 5,915
  • 42
    If you are going to typeset your document without hyphenation I strongly recommend using \raggedright to avoid large spaces between the word. – Will Robertson Nov 07 '10 at 11:07
  • 1
    @WillRobertson But, the document looks too bad. In there a middle road? (for instance like \hyphenpenalty=5000) – Cyriac Antony Aug 19 '19 at 08:31
  • 1
    @cyriac I guess you want the ragged2e package. – Will Robertson Aug 19 '19 at 12:13
  • 1
    This isn’t precisely a way to prevent hyphenation, but unhyphenated documents will usually look much better if you turn font expansion on with microtype. (Not compatible with XeTeX, unfortunately.) This stretches the font slightly to reduce the amount of extra spacing. – Davislor Jan 22 '21 at 14:13
  • 1
    \hyphenpenalty=9999 is just perfect ; all other options make big spaces after full stops, which to my mind is quite ugly. – Vincent Krebs Feb 09 '22 at 09:29

8 Answers8

218

This is discussed in detail in the TeX FAQ. Summarising the information given there:

  1. You can set \hyphenpenalty and \exhyphenpenalty to 10000, which will stop hyphenation, but as TeX will still try to hyphenate this is not hugely efficient.

  2. As Joel says, you can use \usepackage[none]{hyphenat} to select a 'language' with no hyphenation at all. This works fine for a single language document, but not if you want to use babel or polyglossia for other language-specific effects.

  3. Setting \righthyphenmin and \lefthyphenmin to very large values will prevent hyphenation as it tells TeX that it must have more characters in the word than are going to be available. The suggested value in the FAQ is 62.

  4. You can set \hyphenchar\font=-1, which will prevent hyphenation for the current font: this is probably not the best way for an entire document but is how it is done for the tt font shape in LaTeX.

Now, of those (2) is probably the best choice. However, what you did not say is why you want no hyphenation. TeX hyphenates when it cannot find a good line break without it, so you get few hyphens in most cases. The risk with no hyphenation at all is that the output looks bad.

David Carlisle
  • 757,742
Joseph Wright
  • 259,911
  • 34
  • 706
  • 1,036
  • I used option 2. and it did a great job! perfectly formatted without hyphenation. thanks for all the info Joseph! – Splashy Nov 09 '10 at 14:59
  • 1
    option 2. is not so perfect after all... some words are coming out of the text borders. – Splashy Nov 09 '10 at 18:41
  • 7
    @Splashy: see Will's comment about using \raggedright. – Joseph Wright Nov 09 '10 at 18:53
  • @ Joseph: I saw, I tested and now I ended up wanting hyphenation back. Is there a way to remove hyphenation and still keep it aligned on both margins? – Splashy Nov 09 '10 at 19:03
  • 3
    @Splashy: The issue is that in order to do that you end up with unacceptably-long gaps between words (see what happens in a word processor). You can let TeX make bigger gaps using the \sloppy macro, which will hopefully avoid text running into the margins when there is no hyphenation. However, the effect may well be very bad looking. That's really the whole point here: TeX hyphenates to keep a good appearance only when acceptable fiddling with spacing has failed. – Joseph Wright Nov 09 '10 at 19:09
  • 6
    Oh, also consider loading the microtype package, as this enables some other approaches to improving spacing and reducing the need for hyphenation in many cases. – Joseph Wright Nov 09 '10 at 19:10
  • 2
    @Juan: One reason why one might want to avoid hyphenation is because the journal they're submitting to forbids its use: http://www.tandfonline.com/action/authorSubmission?journalCode=snec20&page=instructions. – Sara Apr 17 '13 at 09:13
  • 1
    Adding to Sara's comment, I would claim that hyphenation is for documents in their final stage (i.e. ready to print). Since those of us who submit manuscripts to journals and book publishers are not submitting "final stage" documents, there's no need to hyphenate. And most publishers do not want to receive manuscripts with hyphenations, since they don't want to guess when a hyphenated word is intended, and when it is there because of a line break. I'd recommend using \raggedright - it's the simplest solution. – Sverre Apr 10 '14 at 18:54
  • 1
    @JuanA.Navarro some academic journals automatically reject all submitted articles with hyphenation or automatic wordwrap (this occurs in fields where tex is not very common) – WetlabStudent Feb 15 '15 at 02:20
  • Some institutions require theses be submitted with no hyphenation but fully justified.... – cfr Oct 17 '15 at 00:42
  • 1
    @JosephWright I turned off hyphenation using \usepackage[none]{hyphenat}, but the words get out of the margins.. Is there a way to tell LateX to break the lines each time a word is too long? – Heinz Doofenschmirtz Nov 10 '15 at 20:25
  • 1
    Note that option 1 and 2 silently breaks the breaklines option of the listings package. See https://stackoverflow.com/a/8264050/1650137 about option 2. I tested option 1 and ran into the same issue. – Zero3 Jan 03 '16 at 04:25
  • Note that option 3 does not work if the babel package is used. – Zero3 Jan 03 '16 at 05:20
  • @Zero3 It depends where you put the settings: I'm assume after babel has made its changes – Joseph Wright Jan 03 '16 at 07:52
  • @JosephWright You are probably right. At the end of the preamble it is not working though :/ – Zero3 Jan 03 '16 at 16:40
  • 2
    @JuanA.Navarro, another reason to prevent hyphenation, is that sometimes you want to copy/paste the text from LaTeX to another document. If you have hyphenation, you have to control the text to make sure the newly justified text is not hyphenated in the middle of sentences. – PLG Mar 14 '16 at 07:01
  • 1
    @PLG I'm sure there are a few good reasons for deciding not to hyphenate, I just think it's good to ask oneself whether one actually wants that behavior. – Juan A. Navarro Mar 14 '16 at 18:17
  • With #2, compilation fails with Command \BreakableUnderscore already defined in my document. @TimHarris' suggestion worked for me. – CPBL Sep 28 '16 at 18:26
  • 2
    @JuanA.Navarro The simple answer to "Why would you want to prevent hyphenation?" is "Because it sucks". I cannot count the number of times that I'm reading a text (done with TeX) and I see a word that is screwed up by an incorrect hyphenation after a line break. Also if you are writing a scientific paper or a similar written work hyphenation is something that is avoided in general. – rbaleksandar Feb 25 '17 at 12:46
  • 1
    @rbaleksandar, I thought the TeX mechanism for hyphenation was pretty trustworthy. I've never seen a word "screwed up" by incorrect hyphenation done by Latex in several languages (yes, you do have to use babel for that to work) As far as typeset text goes, it's hard to find professional typesetting, specially in a two-column page, without hyphenation. Writing is another matter: you don't hyphenate text when you write in Latex. –  Jun 15 '18 at 21:51
  • @PLG, you supposedly can also copy from the source code, then there will be no hyphens at all. –  Jun 15 '18 at 21:52
  • @joseph Of course, but if you have a lot of latex codes in the text, then that can prove to be more work than just removing hyphens. – PLG Jun 17 '18 at 09:51
  • The \hyphenpenalty=10000 works well here. Follow a working example: \documentclass[preprint,review,12pt]{elsarticle} \hyphenpenalty=10000 \begin{document} Text, text, text. \end{document} – Yuri Gelsleichter Dec 08 '20 at 19:42
  • Note that LuaTeX manual states that \hyphenchar\font=-1 is deprecated, although it still works. – user202729 Jul 02 '22 at 15:25
155

I use this and it works great for me in almost all documents:

\tolerance=1
\emergencystretch=\maxdimen
\hyphenpenalty=10000
\hbadness=10000

\begin{document}... yadda yadda\end{document}

Tim Harris
  • 1,551
73

A quick google found

\usepackage[none]{hyphenat}

and more useful info here.

David Carlisle
  • 757,742
Joel Berger
  • 1,831
  • 1
  • 12
  • 16
  • 3
    Note that this silently breaks the breaklines option of the listings package. See http://stackoverflow.com/a/8264050/1650137. – Zero3 Jan 03 '16 at 04:15
  • 14
    Another reason for not using hyphenation is if you want a textually 'clean' way to cut-and-paste to other editing environments. For example I cut-and-paste text from the typeset PDF that LaTeX generates into other editing packages when I work with colleagues who do not use LaTeX (and aren't likely to either). – Aldoaldo Apr 15 '16 at 08:00
  • I get badbox errors by using this. – doublefelix Oct 23 '20 at 11:15
34

If one uses babel, there's the hyphsubst package by Heiko Oberdiek:

\documentclass[a4paper]
...
\usepackage[german=nohyphenation,french=nohyphenation]{hyphsubst}
\usepackage[german,french]{babel}

provided the distribution knows about the virtual language nohyphenation that has no patterns (both TeX Live and MiKTeX should know it).

If this is not the case, the following hack is equivalent

\makeatletter\chardef\l@nohyphenation=255 \makeatother
\usepackage[german=nohyphenation,french=nohyphenation]{hyphsubst}

(at least if less than 256 languages are already defined in the format, which is quite likely).

TeX will still possibly break lines at explicit hyphens, though.


To explain it better: if you get an error about

Unknown pattern nohyphenation

then the document should be like

\documentclass[a4paper]

\makeatletter\chardef\l@nohyphenation=255 \makeatother
\usepackage[german=nohyphenation,french=nohyphenation]{hyphsubst}
\usepackage[german,french]{babel}
egreg
  • 1,121,712
  • 1
    I am sorry, but I searched hyphsubst manual for the option nohyphenation, and I got nothing. I would be grateful if you could update your answer if it needs. – Diaa May 05 '17 at 17:03
  • 1
    @DiaaAbidou There is no nohyphenation option: the options are of the form language1=language2 and nohyphenation chooses a language with no hyphenation pattern. – egreg May 05 '17 at 17:06
  • I tried to compile a MWE with your code of babel, but it gives me an error Package hyphsubst Error: Unknown pattern nohyphenation.' \ProcessOptions*. Would you like me to post a new question about it? – Diaa May 05 '17 at 17:15
  • 1
    @DiaaAbidou Then you have to follow the second strategy: “If this is not the case…” – egreg May 05 '17 at 17:17
  • Many thanks for your consideration. I don't want to take more from your time, but whenever you wish, I hope you can explain a bit what you meant by at least if less than 256 languages are already defined in the format, which is quite likely. I couldn't quite understand it. – Diaa May 05 '17 at 17:21
  • @DiaaAbidou Where's the problem? You don't have 255 languages defined in your format, do you? You can get problems only in this case, which is unlikely. Did you try the code? – egreg May 05 '17 at 17:28
  • I tried the code and it worked for me. I didn't quite understand your statement at the first time, and now I get it. The problem is from my side not yours. Thanks again for your help. – Diaa May 05 '17 at 17:32
  • 1
    @DiaaAbidou You're welcome! – egreg May 05 '17 at 17:35
5

You can use the command:

\raggedright

or the environment:

\begin{flushleft}
\end{flushleft}

§ Paragraph alignment

Zombo
  • 1
4

Based on the answers from another post, I found these settings to be perfect to prevent hyphenation without being ugly:

\tolerance=9999
\emergencystretch=10pt
\hyphenpenalty=10000
\exhyphenpenalty=100

\tolerance=9999 allows as much whitespace as possible.

\emerencystretch=10pt allows some extra whitespace per line.

\hyphenpenalty=10000 disables hyphens completly.

\exhyphenpenalty=100 allows using hyphens which were already present.

0

By increasing the width of the spaces between words, it is possible to give LaTeX more room to stretch or squeeze a line of text, thus reducing the frequency with which words have to be divided at line breaks. In many documents, the respacing achieved using the command below will virtually eliminate end-of-line hyphenation, without forcing text into the margin.

    \spaceskip=1.3\fontdimen2\font plus 1.3\fontdimen3\font minus 1.3\fontdimen4\font

In this command, \fontdimen2 is the nominal or ideal distance between words, \fontdimen3 is the allowable extension of the inter-word space and \fontdimen4 is the allowable compression.

It is perhaps worth noting also that hyphenation of a given word can be prevented manually by placing it in an \mbox{}.

0

By using all the answer here, you might be noticed that space after period feels too wide, where you might be not noticed when there is hyphenation.

This is due to latex use more than single space after period. See the discussion in SE answer here.

Thus, you can add \frenchspacing to remove this behavior if you use \pretolerance=10000, and disable the french spacing using \nonfrenchspacing if you use hyphenation.

Also, if your text contain hyphenation that you write manually, you can use \tolerance=9000 and \emergencystretch=0pt to allow change line between word using that hypen. Otherwise, you can set \tolerance=1 and \emergencystretch=\maxdimen to prohibit change line between words of your manual hypen.

The MWE (based on this, and this) will be:

\documentclass[12pt]{article}

\tolerance=9000 \emergencystretch=0pt \hyphenpenalty=10000 \hbadness=10000 \frenchspacing

\begin{document}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam eleifend tellus id ultrices feugiat. Sed a risus vitae nisi placerat posuere. Donec ullamcorper rhoncus purus, a ornare nunc. In tempus elementum tellus a dictum. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Phasellus pharetra mollis efficitur. Duis urna nunc, molestie vitae ante in, pharetra hendrerit arcu. Fusce varius lectus vitae leo facilisis, sed ultricies velit interdum. Nunc volutpat, neque iaculis tempor scelerisque, enim nunc posuere sapien, vitae tempor quam justo a odio. Suspendisse porta vel ante et sagittis. Sed sit amet malesuada ligula, id commodo diam. Donec posuere eros et orci dignissim tincidunt. Donec imperdiet, metus at lobortis rutrum, nisi felis pretium magna, quis lacinia magna erat eget quam. Duis eget dolor consequat, porttitor nunc vel, rutrum tellus. Donec semper finibus justo vel elementum.

\end{document}