平均能量损失

平均能量损失

lstlisting自从升级到版本以来,还有人注意到环境前的间距有所不同吗1.7 2018/09/02

这是 MWE 的输出,其版本 1.7 和版本 1.6 可供比较。

我可以通过删除环境前的空行来获得相同的输出lstlisting,但我不想浏览旧文件并这样做。而且无论如何这似乎是错误的行为。

这是一个错误吗?

有人可以建议一种解决方法来让事情恢复到以前的行为吗?

平均能量损失

\documentclass{article}
\usepackage{listings}
\begin{document}
Preceding paragraph.

\begin{lstlisting}{}
\documentclass{article}
\begin{document}
\end{document}
\end{lstlisting}

Subsequent paragraph.
\end{document}

输出listings 1.7 2018/09/02

1.7 输出

输出listings 1.6 2015/06/04

1.6 输出

答案1

更新

此错误已在 中修复listings 1.8b 2019-02-28

原始答案

由于未知原因,lstlistings 在代码中添加了 \leavevmode,您可以尝试禁用它,直到代码中的问题得到解决:

\documentclass{article}
\usepackage{listings}
\makeatletter 
\lst@AddToHook{PreSet}{\let\leavevmode\relax}
\makeatother
\begin{document}
Preceding paragraph.

\begin{lstlisting}{}
xxx
\end{lstlisting}


Subsequent paragraph.
\end{document}

答案2

我也遇到过这个问题,Debian 稳定版(buster)包含有缺陷的版本2018/09/02 1.7

那里提供的解决方案对我来说不起作用(我没有让它\lst@AddToHook工作),但是按照用户的建议siracusa(在我的问题中列出之前有额外的空间(Debian stretch 与 buster)?),listings可以将该包本地安装到与文档相同的目录中,如下所示:

  1. 从这里下载listings.inslistings.dtx和:lstdrvrs.dtxhttps://www.ctan.org/texarchive/macros/latex/contrib/listings
  2. 通过运行提取文件etex listings.ins
  3. 通过运行照常编译文档,首选pdflatex本地版本的包listings

谢谢您的帮助和提示!:)

相关内容