# multicols* with one-column content / vfill in multicols

I've tried several implementations of creating a vertically filled two-column layout with one-column content below without a clearpage, but have found no success. In my attempt to use the multicols environment, I can't get rest of the page to fill vertically so as to keep the rule but have the one-column content display below. In my attempt to use the multicols* environment, I can get the page to fill vertically, but cannot get the one-column content to display on the same page, as shown in the image below:

I've also tried placing the one-column content in the footer, but the rule then overlaps into the footer.

I'm open to any solution, package or environment, though the twocolumn option for documentclass probably won't work for me as this is a portion of a collection of documents.

• Do you know the exact length of your rule and the position and size of the "one-column-footer" content? – Ulrike Fischer Mar 1 '17 at 7:48
• Not currently but I can calculate them if need be. The footer content is a fixed length, the body content will simply fill the rest of it. – Richard Torres Mar 1 '17 at 14:22
• So the rule has a fix length and location? In this case you can simply put it in the header or footer e.g. with eso-pic or tikz. – Ulrike Fischer Mar 1 '17 at 14:29
• I've attempted placing the footer content within the footer using fancyhdr, but the problem is that the column rule overlaps the footer. I would like the column rule to occupy the rest of the page not used by the footer. To do this, I'm using the multicols* environment. – Richard Torres Mar 1 '17 at 14:41
• \vfill\rule{0pt}{\textheight} will fill two columns. – John Kormylo Mar 1 '17 at 15:15

You can shorten the page:

\documentclass{article}
\usepackage{eso-pic}
\usepackage{multicol,lipsum}

\columnseprule0.4pt
\begin{document}
\enlargethispage{-2cm}
\AtTextLowerLeft{\makebox[\textwidth]{Footer}}}
\begin{multicols*}{2}
\lipsum[1]
\end{multicols*}

\end{document}


You can naturally also draw the line manually and give whatever length it should have:

\documentclass{article}
\usepackage{eso-pic}
\usepackage{multicol,lipsum}

\begin{document}
\AtTextUpperLeft{\makebox[\textwidth]{\rule[\dimexpr-0.8\textheight]{0.4pt}{0.8\textheight}}}%
\AtTextLowerLeft{\makebox[\textwidth]{Footer}}}
\begin{multicols*}{2}
\lipsum
\end{multicols*}

\end{document}


It helps to measure the footer material first by using a savebox.

\documentclass{article}
\usepackage{multicol,lipsum}

\newsavebox{\tempbox}
\columnseprule0.4pt

\begin{document}
\setbox\tempbox=\vbox{\lipsum[2]}% create footer material (outside multicols)
\begin{multicols}{2}
\lipsum[1]
\vfill\rule{0pt}{\dimexpr \textheight - \ht\tempbox - \dp\tempbox - \topskip}
\end{multicols}
\noindent\usebox{\tempbox}% \unvbox\tempbox also works here
\end{document}

• This seems to have an issue when the body content itself fills at least one column. The second the second column is filled, the footer text appears on a separate page. – Richard Torres Mar 26 '17 at 1:43