当使用 包含列表时\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。