Nicely-spaced multiple choice options34hQqWnsnOo svgikiw Xme.áts EeGg .ékök t nzs veci
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?
Thanks in advance.
2 Answers
Here is an alternative using the tasks package:

\\documentclass{article}
\\usepackage{tasks}
\\setlength{\\parindent}{0pt}
\\begin{document}
\\textbf{Question}: Here is the question text. Answers are arranged in 4 columns.
\\begin{tasks}(4)
\\task first answer
\\task second answer
\\task third answer
\\task fourth answer
\\end{tasks}
\\bigskip
\\textbf{Question}: Here is the question text. Answers are arranged in 2 columns.
\\begin{tasks}(2)
\\task first answer
\\task second answer
\\task third answer
\\task fourth answer
\\end{tasks}
\\bigskip
\\textbf{Question}: Here is the question text. Answers are arranged in 2 columns and are longer than a single line.
\\begin{tasks}(2)
\\task first answer first answer first answer first answer
\\task second answer second answer second answer
\\task third answer
\\task fourth answer
\\end{tasks}
\\end{document}
If yu 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)

\\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@{}}
\\textbf{A} first answer &
\\textbf{B} second answer &
\\textbf{C} third answer &
\\textbf{D} fourth answer
\\end{tabularx}
\\end{document}
-
tabularxis a nice solution! – Black Mild 2 hours ago
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}
\\makebox[\\dimexpr \\linewidth/5][l]{...}for each answer. There is also tabularx with 5 X columns. – John Kormylo 12 hours ago