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

share|improve this question

1 Answer 1

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}
share|improve this answer
    
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. –  grizzilus Dec 14 '13 at 5:45

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.