Чтобы избежать многих _ в LaTeX эффективно

Как вы можете избежать _ без использования \_?

Это пример вопроса

word_a_a_a_a_a_b_c_dd

Существует одна функция, которую вы можете использовать для этого. Однако я не могу запомнить его имя.

Ответы

Ответ 1

Вы думаете о пакете underscore, который переопределяет символ подчеркивания, так что вам не нужно его избегать в текстовом режиме? См. здесь.

Ответ 2

Кроме дословного, я не знаю.

Среда Verbatim:

\begin{verbatim}
  word_a_a_a_a_a_b_c_dd
\end{verbatim}

Инлайн:

\verb|word_a_a_a_a_a_b_c_dd|

Ответ 3

Я не смог заставить пакет underscore работать, поэтому я использовал пакет url:

\usepackage{url}
\urlstyle{sf}  % or rm, depending on your font

...

Foo \url{word_a_a_a_a_a_b_c_dd} bar.

Ответ 4

Обычно в таких ситуациях вам нужен моноширинный шрифт, поэтому вы можете использовать это:

\verb|word_a_a_a_a_a_b_c_dd|

Ответ 5

Вы также можете думать о средах lstlisting или verbatim, которые обычно используются для отображения кода, который может содержать символы подчеркивания. Тем не менее, эти окружения делают намного больше, чем просто "escape" подчеркивания.

Ответ 6

Забавно, что это сайт вопросов и ответов для вопросов программирования, но еще никто не предлагал программирование.

Вы можете определить свою собственную команду, которая заменяет токены подчеркивания:

\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\@[email protected]#1_\relax}

\def\@[email protected]#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
        \@[email protected]#2\relax
    \fi
}
\makeatother


\begin{document}
    \filename{__init__.py}
\end{document}