使用 \lstinputlisting 删除前导空格

使用 \lstinputlisting 删除前导空格

当使用 包含列表时\lstinputlisting,用于缩进代码的空格(或制表符)会被保留,这当然是一件好事。但我想逐行记录代码,因此有时缩进的上下文会丢失,因此没有必要。对于长行,可以更好地利用这个空间。是否有选项可以吞噬输入列表的空格(手册指出此功能对于 被忽略\lstinputlisting)。

以下是 MWE:

\documentclass{scrartcl}

\usepackage{listings}
\usepackage{xcolor}
\lstset{backgroundcolor = \color{blue!10!white}} % show leading space

\begin{filecontents*}{code.lua}
function()
    -- indented comment
    local this = "test"
end
\end{filecontents*}

\begin{document}
    \lstinputlisting[firstline=2, lastline = 3]{code.lua}
\end{document}

结果如下(蓝色背景是为了直观地显示前导空格): 结果带空格 我想删除左边的空格。

答案1

listings请参阅文档中的“如何吞噬字符”部分。您可以使用gobble=4选项删除前 4 个字符,但它不适用于\lstinputlisting

考虑使用minted可以处理更多语言的包。你可以这样写。

\documentclass{article}
\usepackage{color}
\usepackage{listings}
\lstset{backgroundcolor = \color{blue}}
\usepackage{minted}
\begin{document}
\lstinputlisting[firstline=2, lastline = 3,gobble=4]{xxx.lua} % It doesn't work.
\begin{lstlisting}[gobble=4]
    aaa
\end{lstlisting}
\inputminted[firstline=2,lastline=3,autogobble]{lua}{xxx.lua}
\end{document}

注意:minted该软件包需要-shell-escape安装选项和 Python。

相关内容