如何快速更改 lstlisting 的間距以使用兩個空格而不是四個?

如何快速更改 lstlisting 的間距以使用兩個空格而不是四個?

我正在處理一些 LaTeX 程式碼清單,並決定將間距從 4 更改為 2。問題是我的文件中有大量清單(約 500 頁)...有什麼方法可以快速重新格式化所有清單以使用兩個空格而不是四個/八/十二/... ?

答案1

您可以使用literate鍵將四個連續空格變成兩個輸出空格:

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

在此輸入影像描述

八個空格的區塊與兩個四個空格的區塊相同,透過密鑰進行上述替換literate即可。如果您需要更多替換,您可以簡單地添加它們,該literate鍵將任意多個替換規則作為三個參數的區塊(替換什麼,替換,替換將佔用的虛擬列數)。

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

在此輸入影像描述

相關內容