我正在尝试使用考试包编写多项选择题考试。对于每个问题,我有 6 个可能的答案(每行 3 个)。这是一个最小的工作示例。
\documentclass[addpoints]{exam}
\begin{document}
\begin{center}
\gradetable
\end{center}
\begin{questions}
\titledquestion{\textbf{Multiple Choice}}[10]
What is the capital of the United states?
\begin{oneparchoices}
\choice NY
\choice Texas
\choice LA \\\\
\choice San Antonio
\choice Chicago
\CorrectChoice Washington D.C.
\end{oneparchoices}
\end{questions}
\end{document}
我希望每三个答案均匀分布在一行中,并且它们之间的间距相等,并且答案 a 直接位于 d 上方,答案 b 位于 e 上方,答案 c 直接位于 f 上方。
谢谢
答案1
我依赖 egreg 的代码(大多数时候都是这样),这是他在我遇到类似需求时给我的。这是对他的代码的轻微修改,我定义了一个新的环境,myoneparchoices
以便您可以完整地使用原始代码oneparchoices
。
\documentclass[addpoints]{exam}
\usepackage{environ,xparse}
%% ------------------egreg's code begins---------------------------
\ExplSyntaxOn
\cs_undefine:N \choices
\cs_undefine:N \endchoices
\NewEnviron{myoneparchoices}{%
\par\nopagebreak
\abd_dochoices:V \BODY
\par
}
\tl_new:N \l_abd_choices_tl
\seq_new:N \l_abd_choices_seq
\seq_new:N \l_abd_choices_final_seq
\cs_new_protected:Npn \abd_dochoices:n #1
{
\setcounter{choice}{0}
\tl_set:Nn \l_abd_choices_tl { #1 }
\tl_replace_once:Nnn \l_abd_choices_tl { \CorrectChoice } { \choice* }
\seq_set_split:NnV \l_abd_choices_seq { \choice } \l_abd_choices_tl
\seq_pop_left:NN \l_abd_choices_seq \l_tmpa_tl
\seq_set_map:NNn \l_abd_choices_final_seq \l_abd_choices_seq
{ \exp_not:n { \makechoice ##1 } }
\seq_map_inline:Nn \l_abd_choices_final_seq
{
\makebox[.3333333333333333333\linewidth][l]{
\parbox[t]{.3\linewidth}{\raggedright \hangindent1.5em ##1\strut}
}\hspace{0pt plus .1\linewidth}
}
}
\cs_generate_variant:Nn \abd_dochoices:n { V }
\ExplSyntaxOff
\makeatletter
\NewDocumentCommand{\makechoice}{s}
{
\stepcounter{choice}
\IfBooleanT{#1}{\ifprintanswers\CorrectChoice@Emphasis\fi}
{\normalfont\makebox[1.2em][l]{\IfBooleanT{#1}{\ifprintanswers\CorrectChoice@Emphasis\fi}\Alph{choice}.}}
}
\makeatother
\begin{document}
\begin{center}
\gradetable
\end{center}
\begin{questions}
\titledquestion{\textbf{Multiple Choice}}[10]
What is the capital of the United states?
\begin{myoneparchoices}
\choice NY
\choice Texas
\choice LA
\choice San Antonio
\choice Chicago
\CorrectChoice Washington D.C.
\end{myoneparchoices}
\end{questions}
\end{document}