在列表中使用空格时更改缩进深度

在列表中使用空格时更改缩进深度

我有一个lstlisting可以渲染几行代码的程序。代码每缩进四个空格。是否有任何设置可以将缩进改为仅两个空格?我知道有,tabsize但那显然是针对制表符的,我想避免更改代码本身。

有什么建议么?

答案1

一种可能的方法是使用literate键将出现的两个连续空格替换为一个空格。

注意事项:这种方法将

  • 也可以在代码行内执行此类替换(但不是在字符串文字中),
  • 干扰用于删除列表中的前导空格的autogobble选项(由包提供)。lstautogobble

在此处输入图片描述

\documentclass{article}

\setlength\parindent{0pt}

\usepackage{listings}
\usepackage{filecontents}

% code available at http://docs.python.org/2/tutorial/classes.html
\begin{filecontents*}{samplecode.py} 
class MyClass:
    """A simple example     class"""
    i = 12345
    def f(self):
        return 'hello world'
\end{filecontents*}

\lstdefinestyle{Python2}
{
    language=Python,
    literate = *{\ \ }{\ }1, %replaces each occurence of two consecutive spaces by one
}

\begin{document}
Indent = 4 spaces (as in the original listing)
\lstinputlisting[language=Python,frame=single]{samplecode.py}
Indent = 2 spaces
\lstinputlisting[style=Python2,frame=single]{samplecode.py}
\end{document}

相关内容