在 \lstinline{} 中换行时占用空格

在 \lstinline{} 中换行时占用空格

我使用这个listings包。如果在多个单词内出现换行符\lstinline{},我会在新行的开头看到令人讨厌的空格:

page left                  page right
    |                          |   
    |normal text normal text IF|
    | FORALL normal text       | 

IF FORALL在里面\lstinline{}

如何避免之前的空格FORALL

谢谢!


编辑:我不介意详细说明。我正在输入包含一些内联代码片段的文档。我用它\lstinline{}来排版它们(因为我也在lstlisting我的文档中使用它们)。

上图显示的是 Latex 代码的结果:

normal text normal text \lstinline{IF FORALL} normal text

现在如果IF FORALL它适合一行,我得到

    |normal text normal text IF FORALL normal|
    |text                                    | 

在我的页面上,这很好。|标记页边距的开始。

如果IF FORALL将其分解为多行,我会得到上面显示的结果。我更希望有:

    |normal text normal text IF|
    |FORALL normal text        | 

希望这能让您更清楚。谢谢。

答案1

这个空格是 IF 和 FORALL 之间的空格。我不知道是否可以以某种方式吃掉它,但你至少可以往后移动一点:

\documentclass{book}
\usepackage{listings}
\lstset{breaklines,postbreak=\kern-1ex}
\textwidth=4cm
\parindent=0cm
\begin{document}
normal text normal text \lstinline{IF FORALL} normal text
\end{document}

补充:我刚刚意识到,如果使用 \lstset{breaklines,breakatwhitespace},空格也会消失

补充 2:避免所有与空白有关的麻烦的一个显而易见的解决方案是使用两个 \lstinline 命令:\lstinline{IF} \lstinline{FORALL}。

答案2

这本身并不能回答您的问题,但我所做的是重写文本,使列表适合一行,或者如果出于某种原因无法做到这一点,则使其成为非浮动列表。这会占用一些额外的空间,但我认为这比打破它更具可读性。

答案3

目前这显然尚未实施。

相关内容