乳胶清单-断线分隔括号,括号附近的空格错误

乳胶清单-断线分隔括号,括号附近的空格错误

使用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允许文本在稍微更好的位置中断。

我建议将这种对换行的微调留到文档设置的结束,因为它们可能会在您更改周围文本时自然解决。

相关内容