multicol: 최소 행 수 이후에만 열 균형을 조정합니까?

multicol: 최소 행 수 이후에만 열 균형을 조정합니까?

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

완전 자동화는 현재 코드 변경을 통해서만 가능합니다. 일회성으로 쉽습니다. 환경이 카운터를 unbalance2로 설정하기 전에 이렇게 하면 시작 수직 크기가 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} 

이 패치를 적용하면 다음과 같은 출력을 얻게 됩니다(다양한 환경에 따라 최소 줄 수를 변경한다는 점에 유의하세요).

여기에 이미지 설명을 입력하세요

관련 정보