迷你頁面中的清單將上一頁的內容吸到底部

迷你頁面中的清單將上一頁的內容吸到底部

我正在處理一個包含許多列表(即程式碼範例)但沒有大量文字的文檔。這些清單中的大多數只有幾行長,有一些跨越多個頁面。在頁面末尾,清單的中間會插入一個分隔符號。

截圖#1
(來源:熱猴網

我不希望短列表跨頁顯示。相反,短列表應該移到下一頁,在上一頁的末尾留下一些空白。理想的解決方案是,如果我可以定義列表大小的閾值,超過該閾值,列表將跨頁顯示,但低於該閾值,列表將自動移動到下一頁的開頭。

截圖#3
(來源:熱猴網

我在網路上沒有找到類似的東西。至少我已經找到瞭如何防止單一清單跨頁面被破壞,即透過將它們放入小型頁面中。透過將小列表放入小型頁面,但保留長列表(手動),我幾乎得到了我想要的東西。

然而,我遇到的問題是,當清單移動到下一頁時,上一頁上的清單(和文字)會「吸」到頁面底部!這會導致標題和內容開頭之間出現空格,而不是內容末尾和頁面末尾之間出現空格,這對我來說沒有多大意義。我確信有某種方法可以防止這種情況發生,只是我不知道如何...

截圖#2
(來源:熱猴網

下面是範例程式碼(請注意,它只有那麼長,因為我沒有找到任何方法來用隨機文字填充列表,所以我必須手動插入大量佔位符文字)。 minipage 指令已註釋,程式碼對應於螢幕截圖#1。如果 minipage 指令未註釋,結果將如螢幕截圖 #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到序言(這是單面文章的預設)將導致 LaTeX 在頁面底部用可拉伸空間填充任何短頁面。

相關內容