我如何将多项选择题答案以矩阵形式排列在考试中?

我如何将多项选择题答案以矩阵形式排列在考试中?

为了创建测试,我使用了exam类,到目前为止效果很好。现在我需要实现一个问题,其可能的答案是一个矩阵,如下所示:

矩阵

但是我无法将\choiceexam类的)命令放入该表单中(我也想用exam它来打印自动解决方案论文)。当我简单地将其放入表格中时,似乎不起作用。我该如何实现这一点?

PS:上面的例子(只是作为视觉解释,没有使用类exam)是:

\documentclass{exam}
\usepackage{amssymb} 
\begin{document}
    \renewcommand{\arraystretch}{1.4}
    \begin{tabular}{r|ccc}
     & Orange & Green & Aubergine \\
     \hline
     Fruit & $\Box$ & $\Box$ & $\Box$ \\
     Vegetable & $\Box$ & $\Box$ & $\Box$ \\
     Colorname & $\Box$ & $\Box$ & $\Box$ \\
    \end{tabular}\
\end{document}

[编辑:添加示例代码] [编辑2:澄清问题]

答案1

文档exam指出:

环境checkboxes创建一个列表环境,其中选择作为列表中的项目。

因此,every\begin{checkboxes}...\end{checkboxes}都会创建一个新列表。您不能将同一列表中的不同项目放在表格的不同单元格中。因此,您需要为表格中的每个单元格创建一个新的单项列表。并且,如果没有预定义的列宽,您就无法将列表放在表格中。因此,要么使用对齐选项(pmb,...)为您提供固定的列宽,要么将列表放在minipage类似 的环境中varwidth(它也会将其内容水平居中)。

由于我们的列表是单项列表,我们并不希望它们看起来像列表,所以我们需要进行一些自定义。在考试类中,这是通过 width 完成的\checkboxeshook。因此,选择:

\renewcommand{\checkboxeshook}{
    \setlength{\labelwidth}{0pt}
    \setlength{\labelsep}{0pt}
    \setlength{\leftmargin}{0pt}
}

现在创建一个宏,这样您就不需要复制粘贴太多代码了。这也会提高代码的可读性。这里有 2 个宏。一个用于常规复选框选项,一个用于正确选择复选框:

\newcommand{\tablechoice}{\begin{varwidth}{\textwidth}\begin{checkboxes}\choice\end{checkboxes}\end{varwidth}}
\newcommand{\tablecorrectchoice}{\begin{varwidth}{\textwidth}\begin{checkboxes}\CorrectChoice\ \end{checkboxes}\end{varwidth}}

所有这些因素加在一起可以让你:

\documentclass[answers]{exam}
\usepackage{amssymb}
\usepackage{varwidth}

\renewcommand{\arraystretch}{1.4}

\newcommand{\tablechoice}{\begin{varwidth}{\textwidth}\begin{checkboxes}\choice\end{checkboxes}\end{varwidth}}
\newcommand{\tablecorrectchoice}{\begin{varwidth}{\textwidth}\begin{checkboxes}\CorrectChoice\ \end{checkboxes}\end{varwidth}}

\checkboxchar{$\Box$}
\checkedchar{$\blacksquare$}

\renewcommand{\checkboxeshook}{
    \setlength{\labelwidth}{0pt}
    \setlength{\labelsep}{0pt}
    \setlength{\leftmargin}{0pt}
}

\begin{document}

\begin{questions}

    \question Answer the following question: \\
    \begin{tabular}{r|*3{c}}
        & Orange & Green & Aubergine \\ \hline
        Fruit & \tablechoice & \tablechoice & \tablechoice \\
        Vegetable & \tablechoice & \tablecorrectchoice & \tablechoice \\
        Colorname & \tablechoice & \tablechoice & \tablechoice \\
    \end{tabular}

\end{questions}

\end{document}

在此处输入图片描述

答案2

根据 Maarten Dhondt 的有用答案,我为自己构建了一个具有多个水平选项的环境,以避免重复回答其他问题:

\documentclass[answers]{exam}
\usepackage{amssymb}
\usepackage{varwidth}

\newenvironment {choicetable} [1] {
    \renewcommand{\arraystretch}{1.7}
    \renewcommand{\checkboxeshook}{
        \setlength{\labelwidth}{0pt}
        \setlength{\labelsep}{0pt}
        \setlength{\leftmargin}{0pt}
    }
    \newcommand{\CO}{\begin{varwidth}{\textwidth}\begin{checkboxes}\choice\end{checkboxes}\end{varwidth}}
    \newcommand{\CX}{\begin{varwidth}{\textwidth}\begin{checkboxes}\CorrectChoice\ \end{checkboxes}\end{varwidth}}
    \begin{tabular}{r*{#1}{c}}
} {
    \end{tabular}   
}
\checkboxchar{$\Box$}
\checkedchar{$\blacksquare$}


\begin{document}
\begin{questions}
    \question Answer the following question: \\
    \begin{choicetable}{3}
        & Orange & Green & Aubergine \\ \hline
        Fruit & \CO & \CO & \CO \\
        Vegetable & \CO & \CX & \CO \\
        Colorname & \CO & \CO & \CO \\
    \end{choicetable} 
\end{questions}
\end{document}

在此处输入图片描述

答案3

像这样吗?

\documentclass[11p,twoside,a4paper,leqno]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fourier}
\usepackage{mathtools}
\usepackage{amsfonts}
\usepackage[x11names]{xcolor}
\usepackage{array, makecell, eqparbox}
\newcommand\tsq{$\square$}
\newcommand\colhead[2][black]{\eqmakebox[H][c]{\color{#1}{#2}}}
\setcellgapes{8pt}

\begin{document}
\begin{center}
  \makegapedcells
  \begin{tabular}{@{}r! {\vrule width 0.8pt}*{3}{c}}%{>{\centering $}m{2cm}<{$}}
                & \colhead[DarkOrange3]{Orange} & \colhead[OliveDrab3]{Green} & \colhead[Plum4]{Aubergine} \\
    \Xhline{0.8pt}
    Fruit & \tsq & \tsq & \tsq \\
    Vegetable & \tsq & \tsq & \tsq \\
    Colour name & \tsq & \tsq & \tsq
  \end{tabular}
\end{center}

\end{document} 

在此处输入图片描述

相关内容