# 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}
-