
Estoy trabajando en un documento que contiene muchos listados (es decir, ejemplos de código) pero no mucho texto. La mayoría de estos listados tienen solo un par de líneas y algunos abarcan varias páginas. Al final de una página, se inserta un salto en medio de un listado.
(fuente:Warmonkey.org)
No quiero que las listas cortas se divida en varias páginas. Más bien, las listas cortas deberían simplemente moverse a la página siguiente, dejando un espacio en blanco al final de la página anterior.La solución ideal sería si pudiera definir un umbral para el tamaño de los listados más allá del cual los listados se dividen en páginas, pero por debajo del cual los listados se mueven automáticamente al comienzo de la página siguiente.
(fuente:Warmonkey.org)
No he encontrado nada parecido en la web.Al menos descubrí cómo evitar que los listados individuales se dividan en páginas, es decir, colocándolos en una minipágina.Al poner listados pequeños en minipáginas pero dejar listados largos como están (a mano), casi tengo lo que quiero.
Sin embargo, el problema que tengo es que cuando un listado se mueve a la página siguiente, los listados (y el texto) de la página anterior son "absorbidos" al final de la página.! Esto da como resultado espacios en blanco entre el título y el comienzo del contenido, en lugar de entre el final del contenido y el final de la página, lo que no tiene mucho sentido para mí. Estoy seguro de que hay alguna manera de prevenir esto, pero no tengo ni idea de cómo...
(fuente:Warmonkey.org)
A continuación se muestra un código de muestra.(tenga en cuenta que es tan largo porque no encontré ninguna manera de llenar los listados con texto aleatorio, por lo que tuve que insertar mucho texto de marcador de posición manualmente). Los comandos de la minipágina están comentados, el código corresponde a la captura de pantalla n.° 1. Si los comandos de la minipágina no están comentados, el resultado se parece a la captura de pantalla n.° 2. El aspecto que quiero que tenga se muestra en la captura de pantalla n.° 3 (que se logra al descomentar el salto de página).
EDITAR: Se agregaron dos lados a la clase de documento.(El código de muestra inicial no pudo reproducir el comentario porque eliminé dos lados justo antes de publicarlo, sabiendo ahora que eso realmente causó el problema).
%#############################################################################
\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}
%#############################################################################
¡Gracias de antemano!
Respuesta1
Las imágenes muestran la diferencia entre \flushbottom
y \raggedbottom
, agregar \raggedbottom
a su preámbulo (que es el valor predeterminado para el `artículo de una sola cara) hará que LaTeX rellene las páginas cortas con espacio extensible en la parte inferior de la página.