为了对具有是/否答案的问题列表进行建模,我想定义一个环境,在其中我可以使用命令设置问题:\clO
针对不适用的选项和\clX
适用的选项。
基于我如何将多项选择题答案以矩阵形式排列在考试中?我想使用tabularx
而不是tabular
,因为右列必须是多行并填满所有空间。
一切都按计划进行,直到我最终想像或命令\CorrectChoice
中那样设置一个元素,导致出现奇怪的错误消息:
\clO
\clX
mwe.tex:41 Something's wrong--perhaps a missing \item. \end{choicelist}
梅威瑟:
\documentclass[answers]{exam}
\usepackage{amssymb}
\usepackage{varwidth}
\usepackage{tabularx}
\checkboxchar{$\Box$}
\checkedchar{$\blacksquare$}
\newcommand{\clO}[1]{
\begin{varwidth}{\textwidth}\begin{checkboxes}\CorrectChoice\end{checkboxes}\end{varwidth}
& \begin{varwidth}{\textwidth}\begin{checkboxes}\choice\end{checkboxes}\end{varwidth}
& #1\\
}
\newcommand{\clX}[1]{
\begin{varwidth}{\textwidth}\begin{checkboxes}\choice\end{checkboxes}\end{varwidth}
& \begin{varwidth}{\textwidth}\begin{checkboxes}\choice\end{checkboxes}\end{varwidth}
& #1\\
}
\newenvironment{choicelist}{
\renewcommand{\arraystretch}{1.4}
\renewcommand{\checkboxeshook}{
\setlength{\labelwidth}{0pt}
\setlength{\labelsep}{0pt}
\setlength{\leftmargin}{0pt}
}
\tabularx{\textwidth}{ccX}
applicable & not applicable & \\
}{
\endtabularx
}
\begin{document}
\begin{questions}
\question
Lorem ipsum dolor sit amet?
\begin{choicelist}
\clO{This is a multiline description to be answered, so we have to use a long text to ensure we can see a line break in the example.}
\clX{foo}
\clO{bar}
\end{choicelist}
\end{questions}
\end{document}
答案1
我刚刚遇到了同样的问题,并重新定义了\choice
和\CorrectChoice
,以便我可以在tabular
环境中使用它们而无需添加checkboxes
环境。
\usepackage{amssymb}
\usepackage{xspace}
\newcommand{\CorrectChoice}{% true
\ifprintanswers
$\boxtimes$%
\else%
$\square$%
\fi%
\xspace%
}
\newcommand{\choice}{% false
$\square$%
\xspace%
}