# Nicely-spaced multiple choice options

I am maxing an exam using LaTeX and use this command for making multiple-choice options:

\newcommand{\mc}[5]{(\textbf{A}) #1 \qquad \qquad (\textbf{B}) #2 \qquad \qquad (\textbf{C}) #3 \qquad \qquad (\textbf{D}) #4 \qquad \qquad (\textbf{E}) #5}


However, for small answer choices (like 1 or 2) or for long ones (like names, etc.), the answer choices don't fit all the way across the screen, since I have the space between each option hard-coded in with \qquad.

Is there a way to automatically make the options space themselves out correctly so that they fit exactly across the page?

Here is an alternative using the tasks package:

\documentclass{article}
\setlength{\parindent}{0pt}

\begin{document}

\textbf{Question}: Here is the question text. Answers are arranged in 4 columns.

\bigskip

\textbf{Question}: Here is the question text. Answers are arranged in 2 columns.

\bigskip

\textbf{Question}: Here is the question text. Answers are arranged in 2 columns and are longer than a single line.

\end{document}


If you want your answer to spread across the whole textwidth, you could use tabularx as follows: (The red vertical lines indicate the width of the textblock). Please note that with this method, the spaces between the first and second , as well as between the second last and the last column will be bigger than the spaces between the other columns. (See also this comment)

\documentclass{article}
\usepackage{tabularx}
\setlength{\parindent}{0pt}
\begin{document}

\textbf{Question}: Here is the question text. Answers are arranged in 4 columns and take up the entire textwidth.

\begin{tabularx}{\textwidth}{@{}X>{\centering\arraybackslash}X>{\centering\arraybackslash}X>{\raggedleft\arraybackslash}X@{}}
\end{tabularx}

\end{document}


Using tabular* in combination with \extracolsep{\fill} one can achieve the following output.Here, the horizontal white spaces between adjacent columns will be equal. If your answers are too long and need a linebreak, you might want to switch to p type columns instead. Please also note, that with this method, the width each answer takes up is different.

\documentclass{article}
\setlength{\parindent}{0pt}
\begin{document}

\textbf{Question}: Here is the question text. Answers are arranged in 4 columns and take up the entire textwidth.

\setlength{\tabcolsep}{0pt}
\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}ccccc}
\textbf{A} 1 &
\textbf{B} 2 &
\textbf{C} 3 &
\textbf{D} 4 &
\textbf{E} 5
\end{tabular*}

\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}ccccc}
\textbf{A} 1 &
\textbf{B} 2 &
\textbf{C} 3 &
\textbf{D} 4 &
\textbf{E} longer text
\end{tabular*}

\begin{tabular*}{\textwidth}{@{\extracolsep{\fill}}ccccc}
\textbf{A} 1 &
\textbf{B} long text &
\textbf{C} 3 &
\textbf{D} 4 &
\textbf{E} longer text
\end{tabular*}

\end{document}

• tabularx is a nice solution! – Black Mild Aug 18 at 10:10
• Is there a way to make the tabularx look neatly-spaced? For example, when I use it for small answer options, I get something like this: (imgur.com/o6FTxEt). – flame Aug 19 at 2:31
• @flame: I have updated my answer with an alternative solution using tabular*. Maybe you are more satisfied with this output. – leandriis Aug 19 at 17:52
• The tabular* solution is exactly what I wanted, and it looks great! Thanks! – flame Aug 19 at 20:57

I am pretty sure that there are several ways. I propose TikZ way due to its flexibility. We can write a new command for this.

\documentclass{article}
\usepackage{tikz}
\begin{document}
\centerline{\LARGE\bfseries\textcolor{blue}{TIKZ for multiple choices}}
\vspace*{1cm}

\noindent{\bfseries Question 1.} This question has $2$ choices.

\noindent\begin{tikzpicture}
\pgfmathsetmacro{\a}{\textwidth}
\path[font=\bfseries,blue]
(0,0)         node{A. $x=1$}
++(0:\a/2 pt) node{B. $x=6$};
\end{tikzpicture}

\noindent{\bfseries Question 2.} This question has $3$ choices.

\noindent\begin{tikzpicture}
\pgfmathsetmacro{\a}{\textwidth}
\path[n/.style={font=\bfseries,circle,draw=blue,fill=gray!30},inner sep=1pt]
(0,0)         node[n]{A}  +(0:1) node{$m=3$}
++(0:\a/3 pt) node[n]{B}  +(0:1) node{$m=4$}
++(0:\a/3 pt) node[n]{C}  +(0:1) node{$m=3$};
\end{tikzpicture}

\noindent{\bfseries Question 3.} This question has $4$ choices.

\noindent\begin{tikzpicture}
\pgfmathsetmacro{\a}{\textwidth}
\path[font=\bfseries,blue,right]
(0,0)         node{A. $x=1$}
++(0:\a/4 pt) node{B. $x=6$}
++(0:\a/4 pt) node{C. $x=8$}
++(0:\a/4 pt) node{D. $x=6688$};
\end{tikzpicture}

\noindent{\bfseries Question 4.} This question also has $4$ choices. You can see choices of Question $3$ and Question $4$ are vertically aligned.

\noindent\begin{tikzpicture}
\pgfmathsetmacro{\a}{\textwidth}
\path[font=\bfseries,magenta,right]
(0,0)         node{A. $y=11$}
++(0:\a/4 pt) node{B. $y=66$}
++(0:\a/4 pt) node{C. $y=88$}
++(0:\a/4 pt) node{D. $y=668866$};
\end{tikzpicture}

\noindent{\bfseries Question 5.} This question also has $4$ choices with other arrangement.

\noindent\begin{tikzpicture}
\pgfmathsetmacro{\a}{\textwidth}
\path[font=\bfseries,right]
(0,0)        node[blue]   {A. Blue}
+(0:\a/2 pt) node[red]    {B. Red}
++(-90:.5)   node[violet] {C. Violet}
+(0:\a/2 pt) node[orange] {D. Orange};
\end{tikzpicture}

\end{document}