9

I'm having a weird vertical gap in one of my documents, which only is there when I use multicol together with \documentclass[parskip=half]{scrreprt}.

Minimal example

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

Output

enter image description here

I'd expect the "foo" to be at the top line of the left column, not on the bottom. What's going wrong there?

10

This is fairly standard multicols behaviour when the text in the first column is short:

Sample output

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

The \subsection has stretchable glue after it, and multicols uses it in the first example to try to balance the bottom of the columns. When the difference is greater, there is not enough glue to achieve this. (In your example you are seeing a larger vertical space as there is more glue available when the parskip=half option is set; suprisingly much as @lockstep points out.)

To over come this there is actually a simple solution using the \raggedcolumns command of multicol:

Sample ragged output

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

I have added text below the multicols to demonstrate that there is no flushing of the page in this case, in contrast to the multicols* environment.

  • I've tried using multicols*, but then the \vfill did fill out the rest of the page instead of the minimum amount needed. This is visible by adding a \section{another title} after the \end{multicols*} which then lands on the next page. – The Compiler Apr 25 '13 at 12:19
  • I have now added a simpler suggestion to avoid that. – Andrew Swann Apr 25 '13 at 12:35
3

While I can't tell what's going on, I can offer a workaround based on the fact that things work as expected with parskip=full: Reduce the stretchability included in the definition of parskip=half (plus 0.5\baselineskip) to that of parskip=full (plus 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}

enter image description here

  • parskip=full just makes the left column longer so the effect disappears. – Andrew Swann Apr 25 '13 at 12:00
  • The effect is still there with a parskip=full plus enlarged stretchability, so something else seems to be going on. Add the following to the OP's example: \makeatletter\setparsizes{\z@}{\baselineskip \@plus .5\baselineskip}{1em \@plus 1fil} \makeatother – lockstep Apr 25 '13 at 12:04
  • 1
    Agreed. As I said in my answer this is associated to the last column balancing of multicols. – Andrew Swann Apr 25 '13 at 12:11
  • +1 for your answer because it offers an explanation, not only a workaround. Still, it's strange that KOMA-Script's stretchability for parskip=half is bigger than for either full or off. If the OP doesn't use my workaround, I'll delete my answer. – lockstep Apr 25 '13 at 12:16
  • I don't think you should delete your answer. This observation about these parskip settings is interesting. – Andrew Swann Apr 25 '13 at 12:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.