multicol.sty
페이지의 작은 부분에 균형 잡힌 열을 사용하고 있습니다 . 일반적으로 나는 이 열이 균형을 이루기를 원하지만 결과 twocol 부분의 높이가 3줄 미만인 경우에는 그렇지 않습니다. 어떻게 해야 하나요? (자동화로?)
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}
따라서 이 예에서는 모든 twocol 텍스트가 왼쪽 열에만 나타나기를 원합니다.
답변1
완전 자동화는 현재 코드 변경을 통해서만 가능합니다. 일회성으로 쉽습니다. 환경이 카운터를 unbalance
2로 설정하기 전에 이렇게 하면 시작 수직 크기가 2 \baselineskip
초씩 확대됩니다.
각 환경 후에 카운터는 0으로 재설정됩니다.
자동으로 수행하는 보다 일반적인 솔루션은 다음과 같습니다.
\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}
이 패치를 적용하면 다음과 같은 출력을 얻게 됩니다(다양한 환경에 따라 최소 줄 수를 변경한다는 점에 유의하세요).