浮动列表 - 如果长度超过一页,则将其拆分

浮动列表 - 如果长度超过一页,则将其拆分

当我使用浮动将长代码放入文件中时lstlisting,它会被强制只出现在章节末尾的一页中,然后部分代码会被截断并超出页面。如果我删除浮动选项,代码会被“拆分”,即使它可以放在一页中。看起来很难看。

我想要的是:

  • 将列表放在页面顶部或底部靠近 TeX 代码的位置
  • 如果列表太长,无法容纳一页,请继续下一页,但如果可以适合一页

这是一个可以尝试的最小示例。请注意,如果删除了浮动选项,它会被“正确”放置,但会被拆分。此外,如果您向其中添加太多行,以至于需要分页符,代码将不会在另一页上继续,而是会被截断。此外,如果从列表中删除一行,它将按预期运行。此外,更改lipsum[1]lipsum[1-3]显示了我所期望的内容。

\documentclass[12pt]{book}
\usepackage{listings}
\usepackage{lipsum}

\begin{document}
\chapter{Test}
\section{Test}
\lipsum[1]

\begin{lstlisting}[frame=single, float=htb]
Long listing start.
























Long listing end.
\end{lstlisting}
\section{Test}
\lipsum[2-5]

\end{document}

答案1

不要使用该float选项。即使没有它,标题也可以:

\begin{lstlisting}[frame=single, caption=foo]
Long listing start.
...
\end{lstlisting}

答案2

在浮动选项中添加感叹号!,使浮动放置具有更高的优先级,因此

\begin{lstlisting}[frame=single, float=!htb]
...
\end{lstlisting}

包含时会忽略浮动位置的一些限制!

相关内容