ミニページにリストすると、前のページのコンテンツが下部に吸い込まれます

ミニページにリストすると、前のページのコンテンツが下部に吸い込まれます

私は、多くのリスト (つまりコード サンプル) を含み、テキストはそれほど多くないドキュメントに取り組んでいます。これらのリストのほとんどは数行の長さで、いくつかは複数ページにまたがっています。ページの終わりに、リストの途中で改行が挿入されます。

スクリーンショット #1
(ソース:ウォーモンキー

短いリストを複数のページに分割したくありません。 むしろ、短いリストは、前のページの最後に空白を残して、次のページに移動する必要があります。理想的な解決策は、リストのサイズのしきい値を定義でき、それを超えるとリストが複数のページに分割され、それ以下の場合はリストが自動的に次のページの先頭に移動されるようにすることです。

スクリーンショット #3
(ソース:ウォーモンキー

ウェブ上ではこれのようなものは見つかりませんでした。少なくとも、単一のリストが複数のページに分割されるのを防ぐ方法、つまりミニページに配置する方法を見つけました。小さなリストをミニページに配置し、長いリストはそのままにしておくことで(手動で)、ほぼ希望どおりのものが完成しました。

しかし、私が抱えている問題は、リストが次のページに移動されると、前のページのリスト(およびテキスト)がページの下部に「吸い込まれる」ことです。! その結果、コンテンツの最後とページの終わりの間ではなく、タイトルとコンテンツの先頭の間に空白ができますが、これはあまり意味がありません。これを防ぐ方法がいくつかあることは確かですが、方法がまったくわかりません...

スクリーンショット #2
(ソース:ウォーモンキー

以下はサンプルコードです(リストにランダムなテキストを入力する方法が見つからなかったため、手動でプレースホルダー テキストをたくさん挿入しなければならなかったため、これだけ長くなっていることに注意してください)ミニページ コマンドはコメント化されており、コードはスクリーンショット #1 に対応しています。ミニページ コマンドのコメントを解除すると、結果はスクリーンショット #2 のようになります。私が望む結果は、スクリーンショット #3 に示されています (ページ区切りのコメントを解除することで実現)。

編集: ドキュメントクラスに twoside を追加しました(最初のサンプル コードでは、投稿直前に 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(片面の `article のデフォルト)、LaTeX によって、短いページの下部に伸縮可能なスペースが埋め込まれます。

関連情報