如何让 `lstlistings` 中的标题与里面的代码保持一致?

如何让 `lstlistings` 中的标题与里面的代码保持一致?

我有 3 段代码,我用lstlistings它在我的文章中展示。

第三个清单的标题是上一页,环境的内容在新页面中。

如何纠正这个错误?

由于我不知道如何产生这种情况,因此我没有给出 MWE。

我正在提供我在环境中使用的选项。

\begin{lstlisting}[caption={This Captions should stick with the below code and should not be in the previous page}\label{lst:somefunction}, mathescape]
def somefunction(A,beta, epsilon, d, NIter, realPrec):
     code ....
    return X
\end{lstlisting}

在此处输入图片描述

答案1

自动阻止分页并不容易——必须先确定所有可能的分页点。但您可以使用 needspace 包:

\documentclass{article}
\usepackage{listings}
\usepackage{needspace}
\begin{document}

\vspace*{41\baselineskip}
abc

\Needspace*{4\baselineskip}
\begin{lstlisting}[caption={This Captions should stick with the below code and should not be in the previous page}\label{lst:somefunction}, mathescape]
def somefunction(A,beta, epsilon, d, NIter, realPrec):
     code ....
    return X
\end{lstlisting}
\end{document}

答案2

假设您正在使用“listings”包,该\lstlistings命令可以采用可选参数float(除了caption)。例如

\begin{lstlisting}[float=tp,%
         caption={This Captions should stick with the below code and should not be in the previous page}\label{lst:somefunction},%
         mathescape]
    def somefunction(A,beta, epsilon, d, NIter, realPrec):
      /*code ....*/
    return X
\end{lstlisting}

相关内容