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
输出listings 1.6 2015/06/04
答案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
可以将该包本地安装到与文档相同的目录中,如下所示:
- 从这里下载
listings.ins
、listings.dtx
和:lstdrvrs.dtx
https://www.ctan.org/texarchive/macros/latex/contrib/listings - 通过运行提取文件
etex listings.ins
- 通过运行照常编译文档,首选
pdflatex
本地版本的包listings
谢谢您的帮助和提示!:)