4

I am creating a document that uses a mixture of 1- and 2-column layouts with the multicol package. I would like to be able to balance the columns and have some text spanning both columns before resuming the 2-column layout. For example:

\documentclass{article}

\usepackage{multicol}
\usepackage{lipsum}

\begin{document}

\begin{multicols}{2}[Some text that will span both columns and fill the entire page width.]

\lipsum

% \end{multicols}
\newpage
% \begin{multicols}{2}[Some text that will span both columns and fill the entire page width.]

\lipsum

\end{multicols}

\end{document}

When \newpage is called, is immediately begins a new page and does not balance the column. The effect I would like to achieve is shown if the two lines above are uncommented. Then, ending the multicol environment and beginning it again (with the option argument to span both columns) works. However, this ends the current group, so local definitions are lost and I cannot proceed if this balancing happens within another environment.

Is it possible to achieve the desired effect, balancing the columns at a specific point with some interceding text?

[I am using the multicol 1.8a package from the SVN site.]

3

hmm this does what you ask, showing the split in the scope of a local declaration and a nested enumerate environment. However if your real case is as you show with a single line it would be simpler to consider the full width text as part of the page heading and just use a custom page style. Then it would also work with automatic page breaking.

enter image description here

\documentclass{article}

\usepackage{multicol}
\usepackage{lipsum}

\usepackage[italian]{babel}
\begin{document}



\setbox0\vbox{{\hsize\dimexpr(\textwidth-\columnsep)/2\relax
\columnwidth\hsize
\linewidth\hsize

\footnotesize% arbitray declaration to show scope
\lipsum


\begin{enumerate}
\item one
\pagebreak
\item two
\item three
\end{enumerate}

\lipsum
\par}}

\setbox2=\vsplit0 to \maxdimen

\begin{multicols}{2}[Some text that will span both columns and fill the entire page width.]
\unvbox2
\end{multicols}
\newpage
\newpage

\begin{multicols}{2}[Some text that will span both columns and fill the entire page width.]
\unvbox0
\end{multicols}

\end{document}
  • This does work but I need to brush up on vsplit. I'll accept this if I can't come up with any other ideas in the next day or so. – brokemongoose Dec 14 '13 at 5:45

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.