通过 Exsheets 包制作多项选择题

通过 Exsheets 包制作多项选择题

通过exsheets做5-选择题

我正在使用 exsheets 包为 Latex 书中的多项选择题编写一个模板,如下所示:

\documentclass[12pt]{book}
\usepackage{tasks}
\usepackage{exsheets}

\begin{document}
    \chapter{}
    \section{Section 1}
    \begin{question}
Sample multiple-choice problem
        \begin{tasks}(4)
            \task Sample answer 1
            \task Sample answer 2
            \task Sample answer 3
            \task Sample answer 4
            \task Sample answer 5
            
        \end{tasks}
    \end{question}

\end{document}

上述代码对于多项选择题的输出不是期望的输出。我想要的输出是以下图像:

在此处输入图片描述

在上图中,每个 5 选择问题都有一些核心特征:

  • 每个问题都有一个如图所示的模板
  • 每个问题都按章节编号进行编号。问题编号
  • 当我插入命令时,\hint{some hint about the question}提示会出现在章节提示中,同样,当我插入时,\nohint{}提示章节中没有出现有关此问题的任何内容
  • 当我插入\correctanswer{}命令时,答案键中指定了正确的选择。
  • 此外,\answer{}请参阅解决方案章节中出现的问题的完整解决方案
  • 我希望除了一些问题之外没有星号,或者有一星号或两星号的符号,并使用以下命令:\nostar{}\onestar{} \twostars{}

是非题

除了5个选择题外,在每一章的开头,还有一些是非题,如下图所示:

在此处输入图片描述

另外,我尝试绘制了这样一个是非题和五选一题的答案模板: 在此处输入图片描述 如果有其他软件包的想法,那将会很有用。

答案1

这是我使用任务所能达到的最接近的效果。使用表格或自定义环境可能会更好。

任务中有许多选项可用,但似乎都没有什么用。增加标签宽度会减少缩进,而不是答案宽度。这似乎由列数决定。

\documentclass[12pt]{book}
%\usepackage{tasks}% redundant
\usepackage{exsheets}
\usepackage{showframe}

\begin{document}
    \chapter{}
    \section{Section 1}
    \begin{question}
Sample multiple-choice problem

    \hfil\parbox{0.8\textwidth}{%
        \begin{tasks}(2)
            \task Sample answer 1
            \task Sample answer 2
            \task Sample answer 3
            \task Sample answer 4
            \task Sample answer 5
        \end{tasks}}
    \end{question}

\end{document}

以下是使用自定义环境实现所需格式的示例。请注意,\choice将文本放入参数中(与\task或不同\item)。未尝试保存答案键。

\documentclass[12pt]{book}
\usepackage{exsheets}
\usepackage{showframe}% alignment tool

\newcounter{choice}
\renewcommand{\thechoice}{\fbox{\arabic{choice}}}

\newlength{\tempwidth}

\newcommand{\mychoice}[1]{% unlike \tem or task, this choiceuses an argument
  \refstepcounter{choice}%
  \rule[-1.2\dp\strutbox]{0pt}{1.2\baselineskip}% vertical spacing by strut
  \makebox[\labelwidth][r]{\thechoice}\hskip\labelsep
  \parbox[t]{\dimexpr \tempwidth-\labelwidth-\labelsep}{#1}% answer
  \hskip\columnsep\allowbreak\ignorespaces}

\newenvironment{choices}[1][1]% #1 = number of columns
{\par\medskip% top
  \noindent\hspace{0.1\textwidth}% left margin
  \begin{minipage}{0.8\textwidth}% \textwidth-left and right margins
    \tempwidth=\dimexpr \linewidth+\columnsep\relax% compute width of column
    \count1=#1\relax% make sure it is a number
    \divide\tempwidth by \count1
    \advance\tempwidth by -\columnsep
    \labelwidth=1.4em %note reuse
    \labelsep=0.333em %note reuse
    \let\choice=\mychoice
    \centering}
  {\end{minipage}\par\medskip}% bottom

\begin{document}
    \chapter{}
    \section{Section 1}
    \begin{question}
Sample multiple-choice problem

    \begin{choices}[2]
      \choice{Sample answer 1}
      \choice{Sample answer 2}
      \choice{Sample answer 3}
      \choice{Sample answer 4}
      \choice{Sample answer 5}
    \end{choices}
    \end{question}

\end{document}

相关内容