我正在尝试探索以“缩进”样式编写 .tex,如下所示:
\documentclass{article}
\usepackage{listings}
\begin{document}
Hello latex!
\begin{lstlisting}[language=python, frame=single]
def nice():
print('This is a nice piece of code')
\end{lstlisting}
\end{document}
但是输出结果并不令人满意,因为代码前面有缩进。制表符将代码推向右侧,这绝对不是我想要的。
有没有办法将 Listings 设置为忽略任意数量的缩进,比如本例中是两个?或者让它变得智能,这样 Listings 就可以知道第一行代码是基础代码,后面的代码需要缩进?
附言:我注意到我的照片上出现了一些奇怪的下划线。但不知道为什么
答案1
您可以使用gobble
选项从列表输出中删除前导空格。当您使用“硬”制表符时,您还应该告诉它您喜欢的制表符大小(选项tabsize
),因为制表符会先扩展为空格。
由于空格位于字符串中,因此会逐字显示。这个想法是,空格在那里很重要,但showstringspaces=false
禁用了该功能。在大多数情况下,显式空格并不像这个简短示例中那样令人讨厌。
为了展示这两个选项:
\documentclass{article}
\usepackage{listings}
\begin{document}
Hello latex!
\begin{lstlisting}[language=python, frame=single, gobble=8, tabsize=4]
def nice():
print('This is a nice piece of code')
\end{lstlisting}
\begin{lstlisting}[language=python, frame=single, gobble=8, tabsize=4, showstringspaces=false]
def nicer(maybe):
print('This is a nice piece of code')
\end{lstlisting}
\end{document}