以下代码不会将列表完全对齐到顶部,而是在页面顶部和列表之间保留一些不必要的空间。如何将列表对齐到最顶部?
\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}