列表如何忽略(一些)缩进?

列表如何忽略(一些)缩进?

我正在尝试探索以“缩进”样式编写 .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}

输出

相关内容