
Ich arbeite an einem Dokument, das viele Listings (nämlich Codebeispiele), aber nicht viel Text enthält. Die meisten dieser Listings sind nur ein paar Zeilen lang, und einige erstrecken sich über mehrere Seiten. Am Ende einer Seite wird in der Mitte eines Listings ein Umbruch eingefügt.
(Quelle:warmonkey.org)
Ich möchte nicht, dass kurze Auflistungen auf mehrere Seiten verteilt werden. Vielmehr sollten kurze Auflistungen einfach auf die nächste Seite verschoben werden, wobei am Ende der vorherigen Seite etwas Leerraum gelassen wird.Die ideale Lösung wäre, wenn ich einen Schwellenwert für die Listengröße definieren könnte, ab dem die Listen auf mehrere Seiten aufgeteilt werden, unter dem die Listen jedoch automatisch an den Anfang der nächsten Seite verschoben werden.
(Quelle:warmonkey.org)
Ich habe nichts dergleichen im Internet gefunden.Ich habe zumindest herausgefunden, wie man die Aufteilung einzelner Einträge auf mehrere Seiten verhindern kann, nämlich indem man sie auf einer Miniseite zusammenfasst.Indem ich kleine Einträge auf Miniseiten einfüge, lange Einträge aber so lasse, wie sie sind (von Hand), habe ich fast das, was ich will.
Das Problem, das ich jedoch habe, ist, dass, wenn ein Eintrag auf die nächste Seite verschoben wird, die Einträge (und der Text) auf der vorherigen Seite an das Ende der Seite "gesaugt" werden! Dies führt zu Leerzeichen zwischen dem Titel und dem Anfang des Inhalts, anstatt zwischen dem Ende des Inhalts und dem Ende der Seite, was für mich nicht viel Sinn ergibt. Ich bin sicher, dass es eine Möglichkeit gibt, dies zu verhindern, ich habe nur keine Ahnung, wie ...
(Quelle:warmonkey.org)
Unten sehen Sie einen Beispielcode(Beachten Sie, dass es nur so lang ist, weil ich keine Möglichkeit gefunden habe, die Auflistungen mit zufälligem Text zu füllen, sodass ich viel Platzhaltertext manuell einfügen musste.). Die Minipage-Befehle sind auskommentiert, der Code entspricht Screenshot #1. Wenn die Minipage-Befehle unkommentiert sind, sieht das Ergebnis aus wie Screenshot #2. Wie es aussehen soll, zeigt Screenshot #3 (erreicht durch Unkommentieren des Seitenumbruchs).
BEARBEITEN: Twoside zur Dokumentklasse hinzugefügt(der ursprüngliche Beispielcode konnte den Kommentar nicht reproduzieren, da ich Twoside direkt vor dem Posten entfernt habe, obwohl ich jetzt weiß, dass dies tatsächlich das Problem verursacht hat).
%#############################################################################
\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}
%#############################################################################
Dank im Voraus!
Antwort1
Die Bilder zeigen den Unterschied zwischen \flushbottom
und \raggedbottom
. Wenn Sie Ihrer Präambel etwas hinzufügen \raggedbottom
(was die Standardeinstellung für einseitige „Artikel“ ist), füllt LaTeX alle kurzen Seiten am unteren Seitenrand mit dehnbarem Raum auf.