# Center-align multicols with equal horizontal spacing

I use multicols within an enumerate environment to make sub-questions; however, I've encountered annoying default: for some reason the spacing between the elements is not even, nor does it appear to be centered on the page. MWE is below.

I've tried using \setlength{\columnsep} and manually inputting horizontal spacers at the problem points, but neither resolves the issue. Ideally, I'd like to be able to set this globally for the document and not have to hack it each time.

\documentclass[9pt]{amsart}
\usepackage[lmargin=.7in,rmargin=.9in,tmargin=1in,bmargin=1in]{geometry}
\geometry{letterpaper}
\usepackage{amsmath}
\usepackage{multicol}

\begin{document}
\begin{enumerate}
\begin{multicols}{5}
\item $(3^{\pi})^{\pi} = \underline{\qquad}$ ; \\
\item $(e^{\pi})^{1/\pi} = \underline{\qquad}$ ; \\
\item $100^{3} \cdot 10^{5} = \underline{\qquad}$ ; \\
\item $(4^x)^2\cdot 4^{x^2} = \underline{\qquad}$ ; \\
\item $\bigl((5^2)^3\bigr)^4 = \underline{\qquad}$ ; \\
\end{multicols}
\end{enumerate}
\end{document}

• What happens if you (a) switch the order of the mulicols and enumerate environments and (b) omit the \\ hard line breaks?
– Mico
Sep 13, 2014 at 19:20
• If you can count to 5, you don't need to use enumerate, and you could use each question into a \makebos[.2\textwidth][l]{} Sep 14, 2014 at 14:38

Well, I'm amazed that this works at all as it is in reality not supported input. The syntax for lists is

   \begin{enumerate}   \item ...


and nothing in between. So putting \begin{multicols} in that space is at best adventurous.

However, if I run your document with the very latest multicols from CTAN 1.8g everything works as far as I can see even if you might think the spacing is a bit strange but see below. I've taken your input and repeated the set of questions modifying the number of columns from 5 down to 2 and if I do this I get the following output:

And if I change the order of the environments to have correct input, i.e.,

\begin{multicols}{5}
\begin{enumerate}
\item $(3^{\pi})^{\pi} = \underline{\qquad}$ ; \\
\item $(e^{\pi})^{1/\pi} = \underline{\qquad}$ ; \\
\item $100^{3} \cdot 10^{5} = \underline{\qquad}$ ; \\
\item $(4^x)^2\cdot 4^{x^2} = \underline{\qquad}$ ; \\
\item $\bigl((5^2)^3\bigr)^4 = \underline{\qquad}$ ; \\
\end{enumerate}
\end{multicols}


the result stays (nearly) the same. The difference is that spacing between item label and text seems to change with the result that you text doesn't any longer fit into a single column if we have 5 columns. I guess the reason is that the label correctly now sits withing the columns whereas before it was actually ending up in the column separation because of that (unsupported interaction between the environments).

Making a quick test file that uses both your original code and the one with correctly ordered environments shows that this is indeed the case (I added \columnseprule=.4pt to make this visible:

\documentclass[9pt]{amsart}
\usepackage[lmargin=.7in,rmargin=.9in,tmargin=1in,bmargin=1in]{geometry}
\geometry{letterpaper}
\usepackage{amsmath}
\usepackage{multicol}

\columnseprule.4pt

\begin{document}

Incorrectly ordered environments (multicols between enumerate and \verb=\item=)

\begin{enumerate}
\item I added an additional item in front to show what's going on: multicol works in the smaller space as the
enumerate indents. But at the same time the labels protrude outside of the space into the column separation.
\begin{multicols}{5}
\item $(3^{\pi})^{\pi} = \underline{\qquad}$ ; \\
\item $(e^{\pi})^{1/\pi} = \underline{\qquad}$ ; \\
\item $100^{3} \cdot 10^{5} = \underline{\qquad}$ ; \\
\item $(4^x)^2\cdot 4^{x^2} = \underline{\qquad}$ ; \\
\item $\bigl((5^2)^3\bigr)^4 = \underline{\qquad}$ ; \\
\end{multicols}
\end{enumerate}

Correctly ordered environments (multicols outside)

\begin{multicols}{5}
\begin{enumerate}
\item $(3^{\pi})^{\pi} = \underline{\qquad}$ ; \\
\item $(e^{\pi})^{1/\pi} = \underline{\qquad}$ ; \\
\item $100^{3} \cdot 10^{5} = \underline{\qquad}$ ; \\
\item $(4^x)^2\cdot 4^{x^2} = \underline{\qquad}$ ; \\
\item $\bigl((5^2)^3\bigr)^4 = \underline{\qquad}$ ; \\
\end{enumerate}         \end{multicols}

\end{document}


If we run this we get:

I haven't checked what goes wrong with an older version of multicol. if it is just the horizontal spacing then what happens there I hope is explained in the example above.

But if also the vertical spacing was somewhat wrong then the reason is that I recently fixed a bunch of alignment issues for very special scenarios, precisely cases like multicol interacting with lists rather than with mainly straight text (for which it was originally written).

Note that version 1.8g may not yet automatically update on TeX distributions like TeX Live so you have to pick it up from CTAN.

You will be better off with an inline list. With enumitem, this is very easy.

\documentclass[9pt]{amsart}
\usepackage[lmargin=.7in,rmargin=.9in,tmargin=1in,bmargin=1in]{geometry}
\geometry{letterpaper}
\usepackage{amsmath}
\usepackage{showframe}
\usepackage[inline]{enumitem}
\begin{document}
\noindent
\begin{enumerate*}[leftmargin=*, itemjoin={{\hfill}}]
\item $(3^{\pi})^{\pi} = \underline{\qquad}$ ;
\item $(e^{\pi})^{1/\pi} = \underline{\qquad}$ ;
\item $100^{3} \cdot 10^{5} = \underline{\qquad}$ ;
\item $(4^x)^2\cdot 4^{x^2} = \underline{\qquad}$ ;
\item $\bigl((5^2)^3\bigr)^4 = \underline{\qquad}$ ;
\end{enumerate*}
\end{document}


Instead of \hfill in itemjoin, you may give a fixed length:

itemjoin={{\hspace{0.75cm}}}


as suitable to you.