Ich verwende multicol.sty
ausgeglichene 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.
Antwort1
Vollautomatisierung ist derzeit nur mit einer Codeänderung möglich. Einmalig ist es einfach: Vor der Umgebung den Zähler unbalance
auf 2 setzen. Dadurch wird die vertikale Startgröße um 2 \baselineskip
s 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):