Multicol: Spaltenausgleich erst nach einer Mindestzeilenzahl?

Multicol: Spaltenausgleich erst nach einer Mindestzeilenzahl?

Ich verwende multicol.styausgeglichene Spalten auf einem kleinen Teil der Seite. Generell möchte ich, dass diese Spalten ausgeglichen sind, aber nicht, wenn der resultierende zweispaltige Teil weniger als 3 Zeilen hoch ist. Wie kann ich das erreichen? (Durch Automatisierung?)

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} 

In diesem Beispiel möchte ich, dass der gesamte zweispaltige Text nur in der linken Spalte angezeigt wird.

Bildbeschreibung hier eingeben

Antwort1

Vollautomatisierung ist derzeit nur mit einer Codeänderung möglich. Einmalig ist es einfach: Vor der Umgebung den Zähler unbalanceauf 2 setzen. Dadurch wird die vertikale Startgröße um 2 \baselineskips vergrößert.

Der Zähler wird nach jeder Umgebung auf Null zurückgesetzt.

Eine allgemeinere Lösung, die dies automatisch erledigt, könnte folgendermaßen aussehen:

\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} 

Wenn wir diesen Patch anwenden, erhalten wir die folgende Ausgabe (beachten Sie, dass ich die Mindestanzahl der Zeilen für die verschiedenen Umgebungen ändere):

Bildbeschreibung hier eingeben

verwandte Informationen