Para escapar de muitos _ em LaTeX de forma eficiente
Pergunta
Como você pode escapar _ sem o uso de \_
?
Este é o exemplo da pergunta
word_a_a_a_a_a_b_c_dd
Existe uma função que você pode usar para isso.No entanto, não consigo lembrar seu nome.
Solução
Você está pensando no underscore
Pacote, que redefine o símbolo sublinhado para que você não precise escapar no modo de texto? Ver aqui.
Outras dicas
Além de literalmente, eu não saberia.
Ambiente literal:
\begin{verbatim}
word_a_a_a_a_a_b_c_dd
\end{verbatim}
Em linha:
\verb|word_a_a_a_a_a_b_c_dd|
Eu não consegui pegar o underscore
pacote para trabalhar, então eu usei o url
pacote:
\usepackage{url}
\urlstyle{sf} % or rm, depending on your font
...
Foo \url{word_a_a_a_a_a_b_c_dd} bar.
Normalmente, você deseja uma fonte monoespacial em tais situações, para que você possa usar isso:
\verb|word_a_a_a_a_a_b_c_dd|
Você também pode estar pensando no lstlisting
ou verbatim
ambientes, que são comumente usados para exibir código - que pode conter sublinhados.No entanto, esses ambientes fazem muito mais do que apenas "escapar" dos sublinhados.
É engraçado como isso é um site de perguntas e respostas para perguntas de programação, mas ninguém sugeriu a programação ainda.
Você pode definir seu próprio comando que substitui os tokens sublinhados:
\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}