170

I want to display my article's abstract and table of contents side-by-side, to save space. I'm using the multicol package, but it tries to keep each column the same height, and I can't figure out how to force it to move content into the second column.

Here's a mockup; I'm just padding out the abstract to show what it should look like. The layout is perfect, I just want a way to do this properly:

\usepackage{multicol}
\begin{document}
\maketitle

\begin{multicols}{2}
\section*{Abstract}

\lipsum[1-2]

a % padding to make the first column run to
  % end of page
a

a

a

a

a

a

a

a

a

a

a

a

\tableofcontents
\end{multicols}

And here's what it looks like, rendered (perfect except for the padding lines):

Result

Nick Merrill
  • 103
  • 3
  • 1
    I fixed the image in your post. Please only use the official interface to upload images (e.g. CTRL+G), otherwise they might break after a while. – Martin Scharrer Jul 22 '11 at 09:56

4 Answers4

177
  • Put \vfill\null after the last line to break.
  • And then put \columnbreak after \vfill\null.

alt text

\documentclass{article}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage{lipsum,multicol}
\usepackage[colorlinks]{hyperref}
\title{Introduction to \LaTeX}
\author{xport}
\begin{document}

\begin{multicols}{2}
\maketitle
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Abstract}
\lipsum[1-2]
\vfill\null
\columnbreak
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\tableofcontents
%\vfill\null
%\columnbreak
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Counter}
\lipsum[1]
\section{Box}
\lipsum[1]
\subsection{Parbox}
\lipsum[1]
\subsection{Rule}
\lipsum[1]
\end{multicols}
\end{document}
Santiago
  • 251
Display Name
  • 46,933
55

If you are not using the multicols package you can insert a column break by adding the following:

\vfill\eject
Werner
  • 603,163
33

The command, appropriately enough, is \columnbreak.

If you want to turn off columns being forced to equal height, use the starred version \begin{multicols*}{2}.

frabjous
  • 41,473
  • 1
    I think we need \vfill before \columnbreak. – Display Name Jan 11 '11 at 05:45
  • 21
    You changed your code after I posted, and it was hard to tell what needed to be done with the old code. You only need \vfill if you want to avoid rubber spacing filling in the extra space. You can turn that off globally with \raggedcolumns -- I'd prefer that to \vfill. – frabjous Jan 11 '11 at 17:48
  • 3
    @frabjous from all the responses here \raggedcolumns was the one finally solving this problem I've been having for months. Too bad I'm usually too impatient to read through all the comments on all the replies... – Andrei Poehlmann Sep 21 '16 at 07:30
  • Is there a way to force new column for new chapters ? – CasperYC Feb 29 '24 at 05:35
  • @CasperYC I'm sure there is, but the mystery isn't how you do it, it's how you got it not to do it in the first place, as in most document classes that would already be default behavior. Consider posting a new question with some minimal code that shows the problem. – frabjous Mar 01 '24 at 15:49
0

You can also try paracol package where you can use \switchcolumn to break pages.