[Tex/LaTex] Different column widths using multicol

flowframmulticolwidth

Is it possible to specify different column widths in a multicol environment? For example, in a two column layout, can the left column be set to twice the width of the right column?

Best Answer

For a single page the package vwcol (vari­able-width mul­ti­ple text columns) make is what you're looking for.

 \documentclass{article} 
 \usepackage[margin=2cm]{geometry}
 \usepackage{lipsum}
 \usepackage{microtype}
 \usepackage{vwcol}  
 \begin{document} 
 \begin{vwcol}[widths={0.6,0.4},
 sep=.8cm, justify=flush,rule=0pt,indent=1em] 
 \lipsum[1-8] 
 \end{vwcol} 
 \end{document} 

MWE1

For multiple pages the suggested flowfram package can help, but mostly with columns (frames) of different heights and places but the same width. Unfortunately the width of a paragraph cannot be changed when jump to a column of different width (the change in \hsize will not come into effect until the end of the paragraph), so it must be simulate a paragraph break with \framebreak or specified the exact point where the text paragraphs jump to the next column (with \newpage or pagebrak[4] or \finishthispage in the last column).

In the next example, the capture show when the first \newpage is commented to explain the problem (otherwise the output is roughly similar to the first example, but the columns are not balanced in this case).

\documentclass{article}
\usepackage[margin=2cm]{geometry}
\usepackage{flowfram}
\usepackage{lipsum}
\usepackage{microtype}

\newflowframe[1-5]
{0.60\textwidth}{\textheight}
{0pt}{0pt}[leftcolumn]

\newflowframe[1-5]{0.30\textwidth}{\textheight}
{0.65\textwidth}{0pt}[rightcolumn]

\begin{document}
\lipsum[1-5]
\newpage 
\lipsum[6-8]
\newpage
\lipsum[9-12]
\end{document}

MWE2

Edit:

Another option is paracol. It can make columns of different widths using \columnratio in multiple pages, but switch of the column is always your work. This mean that if the text reach the end of some column, continues in the next page in the same column, not in the next right column:

\documentclass{article}
\usepackage[latin]{babel}
\usepackage{geometry,parskip,color}
\usepackage{lipsum}
\usepackage{paracol}
\begin{document}
\columnratio{0.6}
\begin{paracol}{2}
\lipsum[1] \switchcolumn \color{red} 
\lipsum[3] \switchcolumn \color{blue}
\lipsum[4] \switchcolumn \color{green}
\lipsum[5] \switchcolumn \color{green}
\lipsum[6] \switchcolumn \color{magenta} % flow to the next page
\lipsum[7] \switchcolumn \color{black} % flow to the next page
\lipsum[8] 
\end{paracol}
\end{document}