重新定义枚举/答案列表环境

重新定义枚举/答案列表环境

每两个月我必须为我的研究所准备一次统计笔试。为了减少打印页数,我想水平打印答案列表的项目。该软件包tasks可以很好地完成这项工作,但不幸的是我不能直接使用它。

我们使用moodle多项选择离线测验模块(mod/offlinequiz)。xml 文件(用于 moodle 导入)和 tex 文件是使用 R 包生成的考试。改变 R 包的行为以使用该包似乎并不是一件容易的事,tasks但我可以轻松地重新定义现有的answerlist环境。

\begin{answerlist} ... \end{answerlist}重新定义为等同于的优雅方法是什么\begin{tasks}(4) ... \end{tasks}? 硬编码 4 列对我来说不是问题。

\documentclass{article}
\usepackage{tasks}

\begin{document}

% current definition of answerlist
\newenvironment{answerlist}{
    \renewcommand{\labelenumi}{(\alph{enumi})}
    \begin{enumerate}}
    {\end{enumerate}}

% Current output (generated by R package exams)
Choose the correct answer:
\begin{answerlist}
    \item[(a)] 447.2
    \item[(b)] 372.6
    \item[(c)] 298.1
    \item[(d)] 223.6
\end{answerlist}

% Desired output
Choose the correct answer:
\begin{tasks}(4)
    \task 447.2 
    \task 372.6 
    \task 298.1 
    \task 223.6 
\end{tasks}

\end{document}

答案1

软件包\RenewTasks已经提供了一种方法。此renewenvironment方法不起作用的原因在此解释邮政

\documentclass{article}
\usepackage{tasks}

\begin{document}

% current definition of answerlist
\newenvironment{answerlist}{
    \renewcommand{\labelenumi}{(\alph{enumi})}
    \begin{enumerate}}
    {\end{enumerate}}

\RenewTasks[]{answerlist}[\item](4)
\begin{answerlist}
    \item[(a)] 447.2
    \item[(b)] 372.6
    \item[(c)] 298.1
    \item[(d)] 223.6
\end{answerlist}

\end{document}

答案2

您可以使用的enumitem内联列表。

\documentclass{article}

\usepackage[inline]{enumitem}

\makeatletter
    \newlist{@answerlist}{enumerate*}{1}
    \setlist[@answerlist]{
        label=(\alph*),
        before=\strut\hfil,
        itemjoin=\hfil,
    }
    \newenvironment{answerlist}{%
        \par\noindent
        \vskip 1ex plus 1ex minus .5ex
        \@answerlist
    }{%
        \end@answerlist
        \@@par
        \vskip 2ex plus 1ex minus 1ex
    }
\makeatother

\begin{document}

Choose the correct answer:
\begin{answerlist}
    \item 447.2
    \item 372.6
    \item 298.1
    \item 223.6
\end{answerlist}

\end{document}

MWE 输出

相关内容