列表标题中的连字符无法正常工作

列表标题中的连字符无法正常工作

我遇到一个问题,如果启用了自动换行功能,列表标题中的自动连字符将不起作用。如果我设置breaklines=falsecaptionpos=t,它就会起作用,这很奇怪。有解决方法吗?我想在底部有标题,我需要自动换行。

\documentclass{article}
\usepackage[english]{babel}

\usepackage{listings}

\lstset{
   breaklines=true,
   captionpos=b
}

\begin{document}

\begin{lstlisting}[caption={information information information information information information information}]
A = B
C = D
\end{lstlisting}

\end{document}

captionpos=b(错误的):

在此处输入图片描述

captionpos=t(正确的):

在此处输入图片描述

答案1

问题在于这条线

\hbadness\@M \pretolerance\@M

和设置的lstmisc\lst@AddToHook{Init}列表内容带有breaklines=true。带有captionpos=t不属于标题,但带有captionpos=b属于标题。它可以防止连字符。一个简单的修复方法是重置\pretolerance

\documentclass{article}
\usepackage[english]{babel}
\usepackage{listings}
\lstset{
   breaklines=true,
}

\begin{document}

\begin{lstlisting}[caption=information  information  information information information information information,captionpos=t]
A = B
C = D
\end{lstlisting}

\begin{lstlisting}[caption={\pretolerance=100 information information information information 
information information information},captionpos=b]
A = B
C = D
\end{lstlisting}

\end{document}

更好的解决方案是重置里面的值\lst@MakeCaption,并应将其报告给当前的维护者listings

相关内容