web-dev-qa-db-ja.com

LaTeXで多くの_を効率的にエスケープするには

\_を使用せずに_をエスケープするにはどうすればよいですか?

これは質問の例です

Word_a_a_a_a_a_b_c_dd

これに使用できる関数が1つあります。しかし、その名前は思い出せません。

underscoreパッケージを考えていますか?これは、アンダースコア記号を再定義して、テキストモードでエスケープする必要がないようにします。 here を参照してください。

27
John Feminella

逐語的以外は私にはわかりません。

逐語的な環境:

\begin{verbatim}
  Word_a_a_a_a_a_b_c_dd
\end{verbatim}

列をなして:

\verb|Word_a_a_a_a_a_b_c_dd|
24
Martijn

underscoreパッケージを機能させることができなかったので、urlパッケージを使用しました。

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

...

Foo \url{Word_a_a_a_a_a_b_c_dd} bar.
13
Vebjorn Ljosa

通常、このような状況では等幅フォントが必要なので、次のように使用できます。

\verb|Word_a_a_a_a_a_b_c_dd|
3
Peter

lstlistingまたはverbatim環境について考えているかもしれません。これらは、コードを表示するために一般的に使用されており、アンダースコアを含めることができます。ただし、これらの環境は、単なる「エスケープ」アンダースコア以上のことを行います。

1
Eamon Nerbonne

これがプログラミングの質問のための質疑応答サイトであるのはおかしいですが、まだ誰もプログラミングを提案していません。

アンダースコアトークンを置き換える独自のコマンドを定義できます。

\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}
0
jakun