使用exsheets进行多项选择考试

使用exsheets进行多项选择考试

我见过许多多项选择题考试的例子,用 来设置正确的答案exam。但是,有没有办法用 来做多项选择题呢exsheets

我想要这样的东西:

1. Question 1
  a)
  b)
  c)

然后,当我打开它时,代码中的某些内容会将正确答案设置为粗体。

答案1

由于exsheets问题与解决方案严格分离,因此遵守这种分离的唯一方法就是复制枚举环境并在\textbf解决方案中标记正确答案。\PrintSolutionsTF在问题环境中使用该命令不起作用。

\documentclass{article}

\usepackage{exsheets}
\usepackage{enumerate}

\begin{document}

\begin{question}[type=exam]
\begin{enumerate}[a)]
\item answer 1
\item answer 2
\item answer 3
\end{enumerate}
\end{question}

\begin{solution}
\begin{enumerate}[a)]
\item answer 1
\item \textbf{answer 2}
\item answer 3
\end{enumerate}
\end{solution}

\begin{question}[type=exam]
\begin{enumerate}[a)]
\item answer 1
% does not work as this is not in a solution environment
\item \PrintSolutionsTF{\textbf{answer 2}}{answer 2}
\item answer 3
\end{enumerate}
\end{question}

\printsolutions

\end{document}

但是,您可以定义自己的命令来实现所需的行为。这样,这将独立于包。请参阅如何避免在 latex 中编译我的一些新命令这样的解决方案。

答案2

下面我提供:

  • 回答您最初的问题,如何使正确的选择以粗体显示。
  • 我更喜欢这样做:在单独的“答案”部分仅打印答案,而不重复整个问题。

我将从我喜欢的方法开始。


我更喜欢

编辑:此代码的原始版本缺少%,导致在正确答案前出现多余的空格。这是不可取的!

\correct这里我们使用它来定义一个命令\PrintSolutionsTF{<true code>}{<false code>}

  • 当位于问题内部时,用标签标记其位置\label{ans:\CurrentQuestionID}
  • 当在解决方案中时,引用\ref{ans:\CurrentQuestionID}

这需要auto-label的选项exsheets

代码如下:

\documentclass{article}
\usepackage[auto-label]{exsheets}

\newcommand{\correct}{
    \PrintSolutionsTF{%
        \ref{ans:\CurrentQuestionID}%
        }{%
        \label{ans:\CurrentQuestionID}%
        }%
}

\begin{document}

\begin{question}
    Which letter is a vowel?
    \begin{tasks}(4)
        \task \correct A
        \task B
        \task C
        \task D
    \end{tasks}
\end{question}
\begin{solution}
    \correct
\end{solution}

\begin{question}
    Which animal is the best?
    \begin{tasks}(4)
        \task cats
        \task dogs
        \task \correct honey badgers
        \task dragons
    \end{tasks}
\end{question}
\begin{solution}
    \correct
\end{solution}

\section*{Answers}
\printsolutions

\end{document}

输出结果如下:

在此处输入图片描述

您最初要求的

标记正确的选项\correct,如果该选项的值为,则etoolbox命令\ifstrequal会将该选项切换为粗体。(这需要在评估之前进行扩展。请参阅\ShowAnswerstrue\ShowAnswers\ifstrequal当参数是使用 etoolbox 命令的结果时,将参数与字符串进行比较

\documentclass{article}
\usepackage{exsheets}
\usepackage{etoolbox}

\newcommand{\ShowAnswers}{false}
\renewcommand{\ShowAnswers}{true} %comment this out if you do not want to show the answers
\newcommand{\correct}{%
    \expandafter\ifstrequal\expandafter{\ShowAnswers}{true}{\bfseries}{}%
}

\begin{document}

\begin{question}
    Which letter is a vowel?
    \begin{tasks}(3)
        \task \correct A
        \task B
        \task C
    \end{tasks}
\end{question}

\begin{question}
    Which animal is the best?
    \begin{tasks}(3)
        \task cats
        \task \correct honey badgers
        \task dragons
    \end{tasks}
\end{question}

\end{document}

输出

在此处输入图片描述

相关内容