Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I want to display my article's abstract and table of contents side-by-side, to save space. I'm using the multicols 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:

\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

share|improve this question
    
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 9:56

3 Answers 3

up vote 28 down vote accepted
  • Put \vfill after the last line to break.
  • And then put \columnbreak after \vfill.

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
\columnbreak
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\tableofcontents
%\vfill
%\columnbreak
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Counter}
\lipsum[1]
\section{Box}
\lipsum[1]
\subsection{Parbox}
\lipsum[1]
\subsection{Rule}
\lipsum[1]
\end{multicols}
\end{document}
share|improve this answer
    
You can move the \maketitle to any line before \begin{multicols} (of course after \begin{document}) to match your preference. –  xport Jan 11 '11 at 6:00
    
I am getting a compilation error for using \columnbreak, but placing only \vfill after the last line before the column break seems to work just fine. –  O. R. Mapper Apr 9 at 7:39

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

\vfill\eject
share|improve this answer
7  
...or issue a \vfill\break. –  Werner Nov 12 '11 at 7:30

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

share|improve this answer
    
I think we need \vfill before \columnbreak. –  xport Jan 11 '11 at 5:45
7  
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

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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