Underscores in words (text)

How can I produce the text Word_one_two in LaTeX?

I tried:

Samp\_Dist\_Corr


But, it doesn't quite look right. Also, I want it in the typewriter font, so actually, I'm doing:

\texttt{Samp\_Dist\_Corr}


I find it looks a bit like the underscore is merging in to the bottom of the "D", but maybe it's just because of the typewriter D?

• This reminds me of one of my pet peeves : all these unneeded special characters in the text mode. If you use the underscore package, then you don't need to escape the _ in text mode. FWIW, in ConTeXt, _ has a letter catcode in text mode, so simply typing Samp_Distt_Corr works. – Aditya Mar 20 '12 at 3:17
• underscore works, but Vim still highlights it as an error. To avoid, edit vimXX/syntax/tex.vim: texOnlyMath "[_^]" becomes "[\^]". – Evgeni Sergeev Jul 16 '13 at 4:40
• Hmm, an annoyance with the underscore package is that it's not bold in \textbf{a_b}. – Evgeni Sergeev Jul 30 '13 at 7:34
• A greater annoyance is that one cannot \includegraphics{filename_with_underscore} when the underscore package is used. – Evgeni Sergeev Aug 1 '13 at 2:27
• Why is it special? I can understand why \ is special, for example. But what does _ do, except annoy all of us? – Aaron McDaid Nov 4 '14 at 12:51

You may prefer the character from the tt font:

\documentclass{article}

\begin{document}

\texttt{Samp\_Dist\_Corr}

\verb|Samp_Dist_Corr|

\texttt{Samp\char_Dist\char_Corr}

\end{document}


Or probably better add \usepackage[T1]{fontenc} then all the above forms will use the character from the font.

• I wonder why when _ is used in text mode LaTeX is not smart enough to send it to output directly? – PHPst Oct 11 '13 at 18:23
• @PHPst This is not LaTeX it is very low level TeX behaviour and in general TeX doesn't do such switches, compare the behaviour of say \alpha also in the original TeX OT1 encoded TeX fonts, they typically didn't have a _ character so it isn't clear what "output directly" means, choice of switching to tt which did have, or using a rule or... – David Carlisle Oct 11 '13 at 18:27
• ' it isn't clear what "output directly" means,...' It could simply consider it similar to all other characters by default in non-math mode. – PHPst Oct 12 '13 at 5:11
• @PHPst in the standard OT1 encoding, that wouldn't be useful try setting \catcode\_=12 (to make it a standard punctuation character) and you'll seee that unless in tt font you get a dot accent, same as < and > are not useful out of text mode and give spanish punctuation inverted ! and ? – David Carlisle Jan 5 '14 at 2:17
• \usepackage[T1]{fontenc} was the key. You should probably mention it more prominently in your answer. – varepsilon Aug 3 '16 at 13:02

You can use \textunderscore also.

\documentclass{article}
%
\begin{document}
Samp\textunderscore Distt\textunderscore Corr

\texttt{Samp\textunderscore Distt\textunderscore Corr}
\end{document}


Underscore is not merging at the bottom of D actually. It is very close to it.

• That \textunderscore thing didn't actually work for me: The underscore symbol \texttt{\char_} is a special variable that contains the result of the last printed value. The underscore symbol \texttt{\textunderscore} is a special variable that contains the result of the last printed value. produces minireference.com/static/textunderscore_not_shown_well.png – ivan Jul 22 '14 at 16:37

A fairly elementary way of stripping special meaning from things is to \detokenize them:

\documentclass{article}
\begin{document}
\texttt{\detokenize{Samp_Dist_Corr}}

\texttt{\detokenize{a@b\c_d&e~f g}}
\end{document}


Note how a space is inserted after a "control sequence". See What are the exact semantics of \detokenize?

• I'm glad I was scrolling through these underscore-related questions: \detokenize is a godsend for basic, machine-generated documents. – Sean Allred Nov 12 '15 at 13:27
• Also for URLs, which may have (oh, the horror) tildes (alias \textasciitilde{}) as well as underscores. – Flash Sheridan Jun 29 '16 at 20:56
• Warning, this breaks UTF-8 support, I used it on text which contained umlauts beside the underscores and got a nasty surprise. – rumtscho Jan 3 '17 at 14:47
• @FlashSheridan there's \usepackage{url} (and then \url{http://blabla.de/~tilde}) for URLs – cgnieder Apr 24 '17 at 19:09
• @rumtscho it doesn't with a true unicode engine (luatex or xetex). With pdflatex for example ä is not one unicode token but two tokens and with \usepackage[utf8]{inputenc} the package does clever stuff to “fool” everybody. \detokenize then just reveals the truth :) – cgnieder Apr 24 '17 at 19:12

I was looking to get the underscore character inside a word in any font, and Google brought me here, so here's the solution I found:

{\_}

word{\_}one{\_}two


produces

_

word_one_two

• This is already covered in the other answers. – Werner Sep 23 '14 at 2:11
• Which answer covers this? All the other answers refer to tt, detokenize, textunderscore, and using underline. – dantiston Sep 23 '14 at 4:12
• The original post asks for a typewriter font solution, which is provided in David's answer. Since it also works in other fonts, it makes this answer no different than his. – Werner Sep 23 '14 at 4:40
• @dantiston I'm not sure in what sense do you think this is different from what the question says. I'm with Werner, I think this answer doesn't add anything. – Manuel Sep 23 '14 at 18:29
• +1. I didnt even read the question fully. But Google brought me here on searching for "underscore in latex" and I feel this is the easiest solution – Pavan Manjunath Sep 16 '15 at 3:21

The solution I like best is to put \chardef\_=_ in the preamble and use \_ to typeset an underscore. That is because:

• \verb doesn't work in macros,
• \char_ is tedious to write and looks confusing,
• \usepackage[T1]{fontenc} messes up all my fonts,
• \textunderscore doesn't work in \texttt,
• \detokenize looks promising, but I already use a lot of \_,
• {\_} doesn't work in \texttt,
• \underline{{ }{ }} looks really bad and \underline{{ }} still doesn't look quite right,
• \rule is a hack that doesn't look right.

Example:

\documentclass{article}

\begin{document}

\texttt{Samp\_Dist\_Corr} -- original

\texttt{Samp{\_}Dist{\_}Corr} -- brackets

\texttt{Samp\textunderscore Dist\textunderscore Corr} -- textunderscore

\texttt{Samp\underline{{ }{ }}Dist\underline{{ }{ }}Corr} -- double underline

\texttt{Samp\underline{{ }}Dist\underline{{ }}Corr} -- underline

\newcommand{\TextUnderscore}{\rule{.4em}{.4pt}}
\texttt{Samp\TextUnderscore{}Dist\TextUnderscore{}Corr} -- rule

\verb|Samp_Dist_Corr| -- verb

\texttt{Samp\char_Dist\char_Corr} -- char

\texttt{\detokenize{Samp_Dist_Corr}} -- detokenize

\chardef\_=_

\texttt{Samp\_Dist\_Corr} -- chardef

\end{document}


• »\usepackage[T1]{fontenc} messes up all my fonts,« Really? How's that? Even if I only load one package this usually is it… – cgnieder Apr 24 '17 at 19:05
• @clemens I'm not sure how to answer your question as it would be difficult to pinpoint the exact cause of the problem I had with fontenc because the document where it occurred was my master's thesis with a lot of different packages. But I guess I can post an example rendering without and with fontenc if you're interested. – arekolek Apr 24 '17 at 19:19
• I was just curious (mostly because of tex.stackexchange.com/questions/664/…) but if you don't remember that's fine :) – cgnieder Apr 24 '17 at 19:25

There's a package for this!

\documentclass{article}

\usepackage{underscore}

\begin{document}
This_is_probably_not a_good_idea.
\end{document}

• For me, this is right now the simplest solution. Having to use workarounds for every single underscore is really painfull. Sometimes I'm really shocked how difficult it can be to do such simple things as writing an underscore in LaTex... Hopefully the package doesn't have any side-effects, but for now it works for me. – mozzbozz Feb 12 '17 at 19:29
• I can't as it wasn't me who asked the question ;) (and I've upvoted this answer already and I can't do it twice...) – mozzbozz Feb 13 '17 at 1:14
• \usepackage{underscore} does have problems, because it will cause problems where LaTeX does interpret underscores correctly, such as file names :-( – con Mar 5 '19 at 15:53
• That's why it says "This is probably not a good idea." – JPi Mar 6 '19 at 3:33
• This is by far the best solution. Specially if you are writing a book about programming languages. It should be the default, and if you want a special case then you would need to type \_, not the other way around. – DrBeco Jul 2 '19 at 4:23

In a pinch, a horizontal \rule may also suffice:

\documentclass{article}
\newcommand{\TextUnderscore}{\rule{.4em}{.4pt}}
\begin{document}
\texttt{Samp\textunderscore{}Dist\textunderscore{}Corr}\par
\texttt{Samp\_Dist\_Corr}\par
\texttt{Samp\TextUnderscore{}Dist\TextUnderscore{}Corr}
\end{document}


The width - .4em - can be adjusted to suit. The height - .4pt - is the "typical" rule-thickness used elsewhere in the document.

The easiest way to have an occasional underscore in text mode (without need to reprogram the whole Matrix...) IMHO is as following:

e.g.:

James\underline{{ }{ }}Bond


which produces a nice James_bond, with a correct spacing between letters

• Can you explain to a newb what the two inner curly brace pairs do? I assume the outer curly brace pair delimits the "text" to be underlined, which here is just whitespace, and the two inner pairs define the amount of white space, making the underline longer than a simple sequence of spaces which seem to be collapsed into one, as usual. Does this simply define exactly two spaces, preventing them from collapsing, and accidentally underlining two looks good? (Because underlining just one looks as bad as a simple \_.) – Peter - Reinstate Monica Nov 24 '15 at 17:01

Change Category Code

For those not interested the functionality of the underscore in LaTeX and just want it to function like any other character, the category code of the underscore can be changed to make it work as might be expected. Here, we assign the underscore the same category code that most punctuation has. Choose one of the following syntaxes according to your preference:

\catcode\_=12   % alphabetic constant syntax
\catcode_=12    % alphabetic constant syntax
\catcode"5F=12   % unicode decimal syntax
\catcode'137=12  % octal syntax
\catcode95=12    % decimal syntax


This way, you can go on about your happy life using the underscore as you normally would. If you need to subset text in math mode, the macro \sb can still be used in math mode for subscript.

Revert Category Code Change

This explanation would not be complete without stating how to restore the underscore to its original category code. Pick one of the following syntaxes according to your preference:

\catcode\_=8   % alphabetic constant syntax
\catcode_=8    % alphabetic constant syntax
\catcode"5F=8   % unicode decimal syntax
\catcode'137=8  % octal syntax
\catcode95=8    % decimal syntax


See egreg's answer: Is it safe to set underscore to a non-active character?

\underline{\hspace{1cm}} is the best solution, I think. Adjust the length of hspace as you see fit.

• Can you explain why this should be best and better than, e.g., \underline{{ }} or \underline{{ }{ }} which has already be shown in, e.g., arekolek's answer? – Schweinebacke Jul 17 '17 at 18:27

Putting the following at the top of the file seems to work for me. You can then use \_ for underscore.

\def\_{{\tt\char95}}

• This by itself cannot work. You are defining \_ but _ on its own won't expand to this definition of \_ (unless you have that too somewhere). – ShreevatsaR Jun 29 '17 at 4:16
• Yes, you have to use \_. I included this because some fonts don't show the underslash character. \tt makes sure that it shows. – Daniel Patru Jun 29 '17 at 15:43

I wanted to include multiple lines of code with underscores. \verb|...| introduced spacing between the lines and \texttt{} mean that I had to escape each underscore. The best way I found was to use \begin{Verbatim}

\begin{Verbatim}
regs.regs_PC = regs.regs_NPC;
regs.regs_NPC += sizeof(md_inst_t);
\end{Verbatim}


Which compiled as

To indent the block, use\usepackage{fancyvrb} and write \begin{Verbatim}[xleftmargin=.5in]

I write mostly documents without ever needing subscripts, so my favourite solution is to redefine the catcode of the underscore character. Then it behaves as any normal letter:

I put this into the preamble:

\catcode\_=12


Should I ever need a subscript in math mode I can use \sb:

$Energy\sb{kinetic}$


Or if I need subscript in text mode I just use \textsubscript:

Normal word\textsubscript{yay!}