[Tex/LaTex] How to get two columns in moderncv

moderncvmulticol

I'm trying to use multicol to get moderncv to put text in two columns, but it turns out that the columns don't get narrowed and both are mashed together.

\begin{multicols}{2}
\section{Experience}
\cventry{Sep 2000 - Aug 2002}{Chief Bottlewasher}{Yoyodyne Systems}{Bumpassville, NY}{}{Washed bottles.  Exorcised demons.  Wrangled cats.  Drilled for oil.  Hung wallpaper.  Neural surgeon.}
\columnbreak
\section{Education}
\cventry{Jun 2000}{Bachelor of Science in Viscosity}{Institute for Extreme Cleverness}{Bumpassville, NY}{}{}
\end{multicols}

I've seen assorted other questions involving multiple columns in moderncv, but they all focus on making multiple columns within a section. The closest I've seen is this one: moderncv two columns in a small part of the page but nobody answered when the original asker said that he wanted languages on the left and interests on the right.

Best Answer

Unfortunately, \recomputecvbodylengths derives all document's dimensions from the \textwidth variable, not \linewidth. The difference between these commands is that the former keeps its value the same in multicolumn mode, while the latter changes appropriately.

So the following code should do the trick with minor boilerplate:

\begin{multicols}{2}
\setlength{\textwidth}{\linewidth}
\recomputecvbodylengths

\section{Experience}
...
...
\vfil
\columnbreak

\section{Education}
...
...
\end{multicols}

The modified \textwidth would be restored back to it's previous state by the multicols environment, so there is no need to manually rescue its value.