将浮动列表对齐到最顶部

将浮动列表对齐到最顶部

以下代码不会将列表完全对齐到顶部,而是在页面顶部和列表之间保留一些不必要的空间。如何将列表对齐到最顶部?

\documentclass{memoir}

\usepackage{caption}
\usepackage{listings}
\usepackage{xcolor}
\usepackage[showframe]{geometry}
\usepackage{lipsum}

\DeclareCaptionFormat{nice}{\noindent\colorbox{blue!10}{\hspace{1em}#1#2#3\hspace{1em}}}

\begin{document}

\lstdefinestyle{interfaces}{
  float,
  floatplacement=tbp
}

\captionsetup[lstlisting]{format=nice,singlelinecheck=false,margin=3pt,font={bf,sf,footnotesize}}

\begin{lstlisting}[style=interfaces,caption={Caption.}]
interface Interface {
}
\end{lstlisting}

\lipsum[1]

\end{document}

在此处输入图片描述


显示问题的代码较少:

\documentclass{article}
\usepackage{listings}
\usepackage{showframe}
\usepackage{lipsum}

\begin{document}
    \begin{lstlisting}[
        float % toggle here
        ]
    Hello world
    \end{lstlisting}
    \lipsum[1]  
\end{document}

答案1

手册第 38 页有提示字幕包

请注意,listings 包有其自己的选项来控制标题的位置和跳过:captionpos=、abovecaptionskip= 和 belowcaptionskip=。(有关详细信息,请参阅 listings 文档。)

反复试验表明,如果你添加

\lstdefinestyle{interfaces}{
  float=tp,
  floatplacement=tbp,
  abovecaptionskip=-5pt
}

到你的 MWE 然后你就会得到(我认为)你想要的:

在此处输入图片描述

为了完整起见,这里是完整的 MWE:

\documentclass{memoir}


\usepackage{listings}
\usepackage{xcolor}
\usepackage[showframe]{geometry}
\usepackage{lipsum}

\DeclareCaptionFormat{nice}{\noindent\colorbox{blue!10}{\hspace{1em}#1#2#3\hspace{1em}}}

\begin{document}

\lstdefinestyle{interfaces}{
  float=tp,
  floatplacement=tbp,
  abovecaptionskip=-5pt
}

\captionsetup[lstlisting]{format=nice,singlelinecheck=false,margin=3pt,
     font={bf,sf,footnotesize},skip=0pt}

\begin{lstlisting}[style=interfaces,caption={Caption.}]
interface Interface {
}
\end{lstlisting}

\lipsum[1]

\end{document}

相关内容