lstlisting のスペースを 4 つではなく 2 つにすばやく変更するにはどうすればよいですか?

lstlisting のスペースを 4 つではなく 2 つにすばやく変更するにはどうすればよいですか?

私はいくつかの LaTeX コード リストを作成中で、スペースを 4 から 2 に変更することにしました。問題は、ドキュメント (約 500 ページ) に大量のリストがあることです。すべてのリストを 4/8/12 ではなく 2 スペースを使用するようにすばやく再フォーマットする方法はありますか?

答え1

literateキーを使用すると、連続する 4 つのスペースを 2 つの出力スペースに変換できます。

\documentclass{article}

\usepackage{listings}
\lstset{literate={\ \ \ \ }{\space\space}{2}}

\begin{document}
\begin{lstlisting}[language=python]
if x is None:
    print('yes')
   # just a quick test that 3 spaces aren't touched
     # just a quick test that 5 spaces are touched
\end{lstlisting}
\end{document}

ここに画像の説明を入力してください

8 つのスペースのブロックは 4 つのスペースのブロック 2 つと同じで、literateキーによる上記の置換は機能します。さらに置換が必要な場合は、単に追加できます。キーliterateは、任意の数の置換ルールを 3 つの引数 (置換対象、置換、置換が占める仮想列の数) のブロックとして受け取ります。

\documentclass{article}

\usepackage{listings}
\lstset
  {
    literate=
      {\ \ \ \ }{\space\space}{2}
      {yes}{no}{2}
  }

\begin{document}
\begin{lstlisting}[language=python]
if x is None:
    print('yes')
    if y is None:
        print('yes again')
   # just a quick test that 3 spaces aren't touched
     # just a quick test that 5 spaces are touched
\end{lstlisting}
\end{document}

ここに画像の説明を入力してください

関連情報