当我使用浮动将长代码放入文件中时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}
包含时会忽略浮动位置的一些限制!
。