小页面中的列表将上一页的内容拖到底部

小页面中的列表将上一页的内容拖到底部

我正在处理一个包含许多列表(即代码示例)但文本不多的文档。大多数列表只有几行,少数列表跨越多页。在页面末尾,列表中间会插入一个换行符。

屏幕截图#1
(来源:warmonkey.org

我不希望短列表跨页显示。相反,短列表应该直接移到下一页,在上一页末尾留出一些空白。理想的解决方案是,如果我可以定义列表大小的阈值,超过该阈值列表就会跨页拆分,但低于该阈值列表会自动移动到下一页的开头。

截图#3
(来源:warmonkey.org

我在网上还没找到类似的东西。至少我已经找到了如何防止单个列表跨页显示的方法,即将它们放入小页面中。通过将小列表放入小页面但保留长列表原样(手动),我几乎得到了我想要的东西。

然而,我遇到的问题是,当列表移动到下一页时,上一页的列表(和文本)会被“吸”到页面底部!这会导致标题和内容开头之间出现空白,而不是内容结尾和页面结尾之间出现空白,这对我来说毫无意义。我确信有某种方法可以防止这种情况,但我不知道该怎么做……

截图#2
(来源:warmonkey.org

下面是示例代码(请注意,它只有那么长,因为我没有找到任何方法用随机文本填充列表,所以我不得不手动插入大量占位符文本)。minipage 命令已注释,代码与屏幕截图 #1 相对应。如果取消注释 minipage 命令,结果将与屏幕截图 #2 类似。我想要的效果显示在屏幕截图 #3 中(通过取消注释分页符实现)。

编辑:将 twoside 添加到 documentclass(最初的示例代码无法重现该评论,因为我在发布之前删除了 twoside,现在知道这实际上导致了问题)

%#############################################################################
\documentclass[11pt,twoside,a4paper]{article}
%#############################################################################

\usepackage{lipsum} % dummy text

\usepackage{fixltx2e} % textsubscript and textsuperscript
\usepackage{listings}

\lstset{frame=single}

%#############################################################################
\begin{document}
%#############################################################################

%""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
\section{A few listings}
%------------------------------------------------------------------------------

\lipsum[2]

%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

%###\noindent\begin{minipage}{\hsize}
\begin{lstlisting}[caption=foo]
not
such
a
huge
listing
\end{lstlisting}
%###\end{minipage}

%###\noindent\begin{minipage}{\hsize}
\begin{lstlisting}[caption=foo]
yet
another
short
one
,
though
a
bit
longer
\end{lstlisting}
%###\end{minipage}

%###\newpage

%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

%###\noindent\begin{minipage}{\hsize}
\begin{lstlisting}[caption=foo]
this
one
is
a
bit
larger
,
so
it
doesn
not
fit
onto
the
page
anymore
!
but
it
still
fits
on
one
page
!
\end{lstlisting}
%###\end{minipage}

%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

\begin{lstlisting}[firstnumber=494,label=code:assoc494,caption=foo]
this
particular
listing
on
the
other
hand
is
a
lot
longer
than
the
one
before
!





















...



























finally
it
is
coming
to
an
end
!!
\end{lstlisting}

%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

%#############################################################################
\end{document}
%#############################################################################

提前致谢!

答案1

图像显示了\flushbottom和之间的区别\raggedbottom,添加\raggedbottom到你的序言(这是单面`文章的默认设置)将导致 LaTeX 在页面底部用可伸缩空间填充任何短页。

相关内容