我有一个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}