16

I need to make a two column document (on a landscape format sheet), but the second column appears in a lower position than the first one. I wrote "always" in the title because it also happens when I use the minipage environment to split the page in two columns. Here's an example, how can I solve this problem? Thank you. Luigi

enter image description here

Here's the input file:

\documentclass{article}
\usepackage[italian]{babel}
\usepackage[utf8]{inputenc}
\usepackage[a4paper,margin=2cm,landscape]{geometry}
\usepackage{lipsum,multicol}
\usepackage[colorlinks]{hyperref}
\usepackage{titlesec}
\titleformat{\section}[block]{\Large\bfseries\filcenter}{}{1em}{}
\title{Nuovi e vecchi fatti stilizzati}
\date{}
\begin{document}
\pagenumbering{gobble}
\maketitle
\begin{multicols}{2}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Kaldor Facts 1961}
\begin{enumerate}
\item La produttività del lavoro è cresciuta a un tasso sostenuto
\item Il rapporto capitale/lavoro è cresciuto a un tasso sostenuto
\item Il tasso di profitto sul capitale è stato stabile nei paesi sviluppati
\item Il rapporto capitale/output è rimasto stabile
\item Le quote di profitto e salario sono state stabili
\item Vi sono state differenze dei tassi di crescita tra paesi nell'ordine del 2\%-5\%
\end{enumerate}
\columnbreak
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{New Kaldor Facts 2009 - Jones, Romer}
\begin{enumerate}
  \item La produttività del lavoro è cresciuta a un tasso sostenuto
\item Il rapporto capitale/lavoro è cresciuto a un tasso sostenuto
\item Il tasso di profitto sul capitale è stato stabile nei paesi sviluppati
\item Il rapporto capitale/output è rimasto stabile
\item Le quote di profitto e salario sono state stabili
\item Vi sono state differenze dei tassi di crescita tra paesi nell'ordine del 2\%-5\%
\end{enumerate}

\end{multicols}
\end{document}
  • 1
    several possibilities really, without showing the input this is not easy to resolve – Frank Mittelbach Jun 29 '13 at 10:11
  • perfectly right, I forgot about the input. done. – Luigi Jun 29 '13 at 10:13
  • 1
    Place an empty \mbox{} at the bottom of each lists. This may have to do with the way lists terminate and you column breaking. – Werner Jun 29 '13 at 14:17
20

The problem here is not related to multicol but is in fact a general problem in LaTeX (and not really solvable within the curent LaTeX model (the galley model for LaTeX3 has a solution for this but this doesn't really help with this not operational).

The problem is the following:

The end of the enumerate generates:

  • a penalty item (-51 good place to break)
  • some extra space

The following section also adds a penalty (-300) and some space before the heading. It tries to be clever and uses \addpenalty which looks back and if it sees some space it will cancel that space by adding its negative amount and then adds the penalty and then re-adds the space. As a result we get a sequence like

.......\penalty -51
.......\glue 10.0 plus 3.0 minus 5.0
.......\glue -10.0 plus -3.0 minus -5.0
.......\penalty -300
.......\glue 10.0 plus 3.0 minus 5.0

The problen now is that multicol will see both penalties and obviously it is better to break at -300. As a result the first column ends in those 2 vertical spaces. The cancel each other so they to not generate a "real" space but they result in this column having no depth, i.e., if the last line of text has some characters like "p" inside the bottom of the column is not on the baseline of that last column but below the decenders.

The right hand column on the other hand has no such extra space at its bottom so it has a depth and that alone results second column to appear larger.

If \columnbreak is used then it gets worse as it gets into the middle of the sequence so that we get

.......\penalty -51
.......\glue 10.0 plus 3.0 minus 5.0
.......\penalty -10005

and a full space from enumerate survives. One can argue that this is perhaps a bug but \columnbreak follows the way \pagebreak works here and simply adds its penalty directly.

This also explains why the workaround using

\end{enumerate}
\unskip
\columnbreak
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{...

with or without the \columnbreak gives us the right output: it drops the space after the enumerate so that it does no harm.

13

While I can't explain the observed behaviour, I have a workaround: Add \unskip before \columnbreak.

\documentclass{article}
\usepackage[italian]{babel}
\usepackage[utf8]{inputenc}
\usepackage[a4paper,margin=2cm,landscape]{geometry}
\usepackage{lipsum,multicol}
\usepackage[colorlinks]{hyperref}
\usepackage{titlesec}
\titleformat{\section}[block]{\Large\bfseries\filcenter}{}{1em}{}
\title{Nuovi e vecchi fatti stilizzati}
\date{}
\begin{document}
\pagenumbering{gobble}
\maketitle
\begin{multicols}{2}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{Kaldor Facts 1961}
\begin{enumerate}
\item La produttività del lavoro è cresciuta a un tasso sostenuto
\item Il rapporto capitale/lavoro è cresciuto a un tasso sostenuto
\item Il tasso di profitto sul capitale è stato stabile nei paesi sviluppati
\item Il rapporto capitale/output è rimasto stabile
\item Le quote di profitto e salario sono state stabili
\item Vi sono state differenze dei tassi di crescita tra paesi nell'ordine del 2\%-5\%
\end{enumerate}
\unskip\columnbreak
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section*{New Kaldor Facts 2009 - Jones, Romer}
\begin{enumerate}
  \item La produttività del lavoro è cresciuta a un tasso sostenuto
\item Il rapporto capitale/lavoro è cresciuto a un tasso sostenuto
\item Il tasso di profitto sul capitale è stato stabile nei paesi sviluppati
\item Il rapporto capitale/output è rimasto stabile
\item Le quote di profitto e salario sono state stabili
\item Vi sono state differenze dei tassi di crescita tra paesi nell'ordine del 2\%-5\%
\end{enumerate}

\end{multicols}
\end{document}

enter image description here

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.