multicol、scrreprt 和 parskip=half 存在奇数垂直间隙

multicol、scrreprt 和 parskip=half 存在奇数垂直间隙

我的一个文档中出现了奇怪的垂直间隙,只有当我multicol与 一起使用时才会出现\documentclass[parskip=half]{scrreprt}

最小示例

\documentclass[parskip=half]{scrreprt}
\usepackage{multicol}
\begin{document}

\begin{multicols}{2}
        \subsubsection{title}
        this \\
        is \\
        a long \\
        text
\vfill
\columnbreak
        \subsubsection{title}
        foo
\end{multicols}

\end{document}

输出

在此处输入图片描述

我期望“foo”位于左列的顶行,而不是底行。那里出了什么问题?

答案1

multicols当第一列中的文本很短时,这是相当标准的行为:

示例输出

\documentclass{article}
\usepackage{multicol}
\begin{document}

\begin{multicols}{2}
  \subsubsection{title}
  Broken text that spreads over two lines to demonstrate behaviour.
  \columnbreak
  \subsubsection{title}
  foo
\end{multicols}

\begin{multicols}{2}
  \subsubsection{title}
  Broken text that spreads over two lines to demonstrate behaviour.
Now extended to another line.
  \columnbreak
  \subsubsection{title}
  foo
\end{multicols}

\end{document}

\subsection后面有可拉伸的胶水,并在multicols第一个示例中使用它来尝试平衡列的底部。当差异较大时,胶水就不足以实现这一点。(在您的示例中,您看到更大的垂直空间,因为parskip=half设置选项后有更多的胶水可用;令人惊讶的是,正如@lockstep 指出的那样。)

为了解决这个问题,实际上有一个简单的解决方案,使用\raggedcolumns以下命令multicol

样本不规则输出

\documentclass{article}
\usepackage{multicol}
\begin{document}

\begin{multicols}{2}
  \raggedcolumns
  \subsubsection{title}
  Broken text that spreads over two lines to demonstrate behaviour.
  \columnbreak
  \subsubsection{title}
  foo
\end{multicols}

Text below
\end{document}

我在下面添加了文本multicols来证明与环境不同,在这种情况下页面不会刷新multicols*

答案2

虽然我不知道发生了什么,但我可以根据事情按预期进行的事实提供一种解决方法:将( )parskip=full定义中包含的可拉伸性降低到()。parskip=halfplus 0.5\baselineskipparskip=fullplus 0.1\baselineskip

\documentclass[parskip=half]{scrreprt}
\makeatletter
      \setparsizes{\z@}{.5\baselineskip \@plus .1\baselineskip}{%
        1em \@plus 1fil}%
\makeatother
\usepackage{multicol}
\begin{document}

\begin{multicols}{2}
        \subsubsection{title}
        this \\
        is \\
        a long \\
        text
\vfill
\columnbreak
        \subsubsection{title}
        foo
\end{multicols}

\end{document}

在此处输入图片描述

相关内容