![将浮动列表对齐到最顶部](https://linux22.com/image/316917/%E5%B0%86%E6%B5%AE%E5%8A%A8%E5%88%97%E8%A1%A8%E5%AF%B9%E9%BD%90%E5%88%B0%E6%9C%80%E9%A1%B6%E9%83%A8.png)
以下代码不会将列表完全对齐到顶部,而是在页面顶部和列表之间保留一些不必要的空间。如何将列表对齐到最顶部?
\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}