# Hyphenation for words with underscore

Can I tell LaTeX that it may hyphen words that contain an underscore `_` always before the underscore?

I have a lot of code examples in text, like `is_error_condition_enum` and I would like to tell LaTeX it may hyphen this as:

``````Lorem ipsum is_error_-
condition_enum lorem.
``````

always.

If that is not possible globally, how do I make an entry for some underscore-words like:

``````\hyphenation{is_-error_-condition_-enum}
``````

because that entry is rejected, obviously.

In sourcecode I write words like these as `\gpmono{is\gpus{}error\gpus{}condition\gpus{}enum}`.

``````\newcommand{\gpus}{\_\discretionary{-}{}{}}
``````

If `\gpus` is used in other places where hyphenation is not wanted, you can modify its definition only in the argument of `\gpmono`:

``````\newcommand{\gpmono}[1]{\begingroup
\renewcommand{\gpus}{\_\discretionary{-}{}{}}%
\ttfamily#1\endgroup}
``````

Of course, without knowing your original definitions of `\gpmono` and `\gpus`, I tried to guess.

• Ok, I looked up the definition of `\gpus` (comes from the style I use) and inserted `\renewcommand{\gpus}{\symbol{"5F}\discretionary{-}{}{}}` into my document. It works ok now. But a question: Does this now "inject" `\discretionary` at all my usings of `\gpus`? Is that necessary? Would it not be enough to define/declare it at one specific place once? I have no idea how `\discretionary` works (obviously). – towi Sep 12 '11 at 10:44
• Yes, it will use `\discretionary{-}{}{}` in all places where `\gpus` is found. In alignments it will have no effects, unless the cell is a "paragraph cell", where you of course want again the hyphenation. – egreg Sep 12 '11 at 10:55

The `underscore` package provides a way to do this automatically: It modifies the defintion of the `\_` command in order to allow hyphenation after the underscore. Furthermore, it allows you to simply write `_` instead of `\_` in text mode to produce an underscore. Everything you have to do is loading the package with

``````\usepackage{underscore}
``````
• Did you actually try this with the `\hypenation{}` (TeX!-)command? Because for me it's not working at all. Getting the same error: `Improper \hyphenation will be flushed. ...` – 0xC0000022L Jul 4 '19 at 9:49