每两个月我必须为我的研究所准备一次统计笔试。为了减少打印页数,我想水平打印答案列表的项目。该软件包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}