Reputation: 141220
How can you escape _ without the use of \_
?
This is the example of the question
word_a_a_a_a_a_b_c_dd
There is one function which you can use for this. However, I cannot remember its name.
Upvotes: 25
Views: 51105
Reputation: 11
Most methods above fail when the text comes from another macro, because one does not want to list the macro name. The \url{} command works, but if one does not want a link generated, then one can use also \nolinkurl{} from the hyperref package.
For example you could use the macro \jobname to print the base name of your main LaTeX file. This will print some funny characters in place of the underscores, if the filename contains underscores. To print the filename properly, you could wrap the macro \jobname in \nolinkurl.
For example, if the filename is "my_project.tex" you could:
Admittedly, this is not a good answer to the original question on how to escape many underscores, since you won't be able to put a long text in \nolinkurl.
Upvotes: 1
Reputation: 311536
Are you thinking of the underscore
package, which redefines the underscore symbol so that you don't have to escape it in text mode? See here.
Upvotes: 32
Reputation: 674
It's funny how this is a question and answer site for programming questions but nobody has suggested programming yet.
You could define your own command which replaces the underscore tokens:
\documentclass{article}
\newcommand{\filename}[1]{\emph{\replunderscores{#1}}}
\makeatletter
% \expandafter for the case that the filename is given in a command
\newcommand{\replunderscores}[1]{\expandafter\@repl@underscores#1_\relax}
\def\@repl@underscores#1_#2\relax{%
\ifx \relax #2\relax
% #2 is empty => finish
#1%
\else
% #2 is not empty => underscore was contained, needs to be replaced
#1%
\textunderscore
% continue replacing
% #2 ends with an extra underscore so I don't need to add another one
\@repl@underscores#2\relax
\fi
}
\makeatother
\begin{document}
\filename{__init__.py}
\end{document}
Upvotes: 5
Reputation: 132257
Typically you want a monospaced font in such situations, so you can use this:
\verb|word_a_a_a_a_a_b_c_dd|
Upvotes: 3
Reputation: 18008
I couldn't get the underscore
package to work, so I used the url
package:
\usepackage{url}
\urlstyle{sf} % or rm, depending on your font
...
Foo \url{word_a_a_a_a_a_b_c_dd} bar.
Upvotes: 14
Reputation: 48066
You may also be thinking of the lstlisting
or verbatim
environments, which are commonly used to display code - which can contain underscores. However, these environments do a lot more than just "escape" underscores.
Upvotes: 1
Reputation: 5663
Other than verbatim I wouldn't know.
Verbatim environment:
\begin{verbatim}
word_a_a_a_a_a_b_c_dd
\end{verbatim}
Inline:
\verb|word_a_a_a_a_a_b_c_dd|
Upvotes: 29