Ändern Sie die Einrückungstiefe, wenn Sie Leerzeichen in der Listenauflistung verwenden

Ändern Sie die Einrückungstiefe, wenn Sie Leerzeichen in der Listenauflistung verwenden

Ich habe eine , lstlistingdie einige Codezeilen rendert. Der Code ist um vier Leerzeichen pro Einzug eingerückt. Gibt es eine Einstellung, um den Einzug auf nur zwei Leerzeichen zu ändern? Ich weiß, dass es eine gibt, tabsizeaber das ist offensichtlich für Tabulatoren und ich möchte vermeiden, den Code selbst zu ändern.

Irgendwelche Vorschläge?

Antwort1

Eine Möglichkeit besteht darin, mit dem literateSchlüssel jeweils zwei aufeinanderfolgende Leerzeichen durch ein Leerzeichen zu ersetzen.

Vorbehalte: Dieser Ansatz wird

  • solche Ersetzungen auch „innerhalb“ von Codezeilen durchführen (allerdings nicht in Stringliteralen),
  • beeinträchtigen die autogobble(vom lstautogobblePaket angebotene) Option, die zum Entfernen führender Leerzeichen in einer Auflistung verwendet wird.

Bildbeschreibung hier eingeben

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

verwandte Informationen