Ich habe eine , lstlisting
die 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, tabsize
aber 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 literate
Schlü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
(vomlstautogobble
Paket angebotene) Option, die zum Entfernen führender Leerzeichen in einer Auflistung verwendet wird.
\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}