multicol: ¿equilibrio de columnas solo después de un número mínimo de líneas?

multicol: ¿equilibrio de columnas solo después de un número mínimo de líneas?

Lo estoy usando multicol.stypara columnas equilibradas en una pequeña parte de la página. Generalmente quiero que estas columnas estén equilibradas, pero no si la parte de dos columnas resultante tiene menos de 3 líneas de altura. ¿Cómo puedo hacer esto? (¿Por automatización?)

MWE:

\documentclass{scrartcl}
\usepackage{multicol}
\parindent 0pt

\begin{document}

Some onecolumn text goes here on top of the page \ldots 

\begin{multicols}{2}
    This text is balanced into two columns, although it is very
    short. How can I prevent balancing below 3 lines minimum
    height?
\end{multicols}%

Some more onecolumn text goes here below the twocol part \ldots 

\end{document} 

Entonces, en este ejemplo quiero que todo el texto de dos columnas aparezca solo en la columna de la izquierda.

ingrese la descripción de la imagen aquí

Respuesta1

La automatización total ahora solo es posible con un cambio de código. Como algo único, es fácil: antes del entorno, ajuste el contador unbalancea 2. Esto ampliará el tamaño vertical inicial en 2 \baselineskips.

El contador se pondrá a cero después de cada entorno.

Una solución más general que lo haga automáticamente podría verse así:

\documentclass{scrartcl}
\usepackage[balancingshow]{multicol}
\parindent 0pt

%-------------------------------------------------------------------------------
\usepackage{regexpatch}

\newcounter{multicolminlines}
\setcounter{multicolminlines}{1}

\makeatletter
\xpatchcmd\balance@columns
   {\ifnum\dimen@<\topskip
     \mult@info\@ne
       {Start value
          \the\dimen@  \space ->
          \the\topskip \space (corrected)}%
     \dimen@\topskip
   \fi}
   {\skip@\c@multicolminlines\baselineskip
   \advance\skip@-\baselineskip
   \advance\skip@\topskip
   \ifnum\dimen@<\skip@
     \mult@info\@ne
       {Start value
          \the\dimen@  \space ->
          \the\skip@ \space (corrected)}%
     \dimen@\skip@
   \fi
   }
   {\typeout{Success!}}{\patchFAILED}
\makeatother
%-------------------------------------------------------------------------------

\begin{document}

Some onecolumn text goes here on top of the page \ldots 

\setcounter{multicolminlines}{3}
\begin{multicols}{2}
    This text is balanced into two columns, although it is very
    short. How can I prevent balancing below 3 lines minimum
    height?
\end{multicols}

Some more onecolumn text goes here below the twocol part \ldots 


\setcounter{multicolminlines}{2}
\begin{multicols}{2}
    This text is balanced into two columns, although it is very
    short. How can I prevent balancing below 3 lines minimum
    height?
\end{multicols}


\begin{multicols}{2}
    This text is balanced into two columns, although it is very
    short. 
\end{multicols}

\setcounter{multicolminlines}{1}
\begin{multicols}{2}
    This text is balanced into two columns, although it is very
    short. 
\end{multicols}

\end{document} 

Si aplicamos este parche, obtenemos el siguiente resultado (tenga en cuenta que cambio el número mínimo de líneas para los distintos entornos):

ingrese la descripción de la imagen aquí

información relacionada