使用listings
包时,括号后的间距错误,并且换行时,括号经常与前面的内容分开。我该怎么做才能改变这种情况?输出非常丑陋。下面是一个有问题的列表示例。
\documentclass{report}
\usepackage{listings}
\usepackage[lighttt]{lmodern}
\lstset{
language={[5.2]Lua},
basicstyle=\ttfamily,
keywordstyle=\bfseries,
breaklines=true
}
\begin{document}
\chapter{Test}
This is a minimal page.
This is not correct \lstinline{function test(c) math.sqrt(c) + 22456*math.sqrt(c) end}.
This is correct \texttt{function test(c) math.sqrt(c) + 22456*math.sqrt(c) end}.
\begin{lstlisting}
if not something then
local m = foo:doSomething(object.untriedthings)
end
\end{lstlisting}
\end{document}
答案1
我使用另一个包解决了该问题。
我使用了包minted
,在安装了包之后pygments
。在序言中我放入了以下代码:
\setminted{breaklines}
\newminted{lua}{frame=single}
然后,对于每个内联代码我都使用该命令\mintinline{lua}{...}
,对于其他代码\begin{luacode} ... \end{luacode}
答案2
您可以将此选项添加到您的\lstset
:
\lstset{
...
keepspaces = true
}
输出:
更多详情请参阅文档listings
(第 5.11 节)。
正如文档所说:
keepspaces=true
告诉包不要删除空格来修复列对齐,并始终将制表符转换为空格。
keepspaces
的默认值为false
。
答案3
以下是实现更好的越线:
\documentclass{article}
\usepackage{listings}
\usepackage[lighttt]{lmodern}
\lstset{
language={[5.2]Lua},
basicstyle=\ttfamily,
keywordstyle=\bfseries,
breaklines=true,
mathescape
}
\begin{document}
This is not correct \lstinline{function test(c) math.sqrt(c) + 22456*math.sqrt(c) end}.
\begin{sloppypar}
This is not correct \lstinline{function test(c) math.sqrt(c) + 22456*math.sqrt$\texttt{(c)}$ end}.
\end{sloppypar}
This is correct \texttt{function test(c) math.sqrt(c) + 22456*math.sqrt(c) end}.
\end{document}
切换到常规\texttt
(或装箱)可将文本组件保持在一起。在上面的示例中,文本溢出到边距的程度相当小。但是,sloppypar
允许文本在稍微更好的位置中断。
我建议将这种对换行的微调留到文档设置的结束,因为它们可能会在您更改周围文本时自然解决。