Изменить глубину отступа при использовании пробелов в списке

Изменить глубину отступа при использовании пробелов в списке

У меня есть , 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}

Связанный контент