答案列表在 R/exams 中分布在多个栏目中以节省纸张 space

Answer list in R/exams distributed by several columns to save paper space

我想将 R/exams 中的答案列表配置为按列分布:

一个。答案 1. C. 答案 3.

乙。答案 2. D. 答案 4.

在 LaTeX 中,我使用了 multicol 包。 R/exams 也可以吗?

用于生成打印在纸上的 PDF 文件的 R/exams 接口是 exams2pdf()exams2nops()(建立在 exams2pdf() 之上)。这两者都在后台使用 LaTeX,并允许调整用于呈现答案列表的环境。所以答案是:是的,您也可以为此使用 multicol LaTeX 包中的 {multicols} 环境。

更具体地说,在 LaTeX 代码中,您的答案列表将写为:

\begin{answerlist}
  \item Answer 1.
  \item Answer 2.
  \item Answer 3.
  \item Answer 4.
\end{answerlist}

这个{answerlist}的渲染则取决于文档header中这个环境的定义。 exams2nops() 中的默认值以及 exams2pdf() 随包一起提供的演示模板是:

\newenvironment{answerlist}%
  {\renewcommand{\labelenumii}{(\alph{enumii})}\begin{enumerate}}%
  {\end{enumerate}}

简而言之,这只是使用标准 {enumerate} 环境并将计数器切换为 (\alph{...}) 格式,即 (a), (b), .... In exams2nops() 默认情况下会产生以下输出:

或者,您可以通过以下方式(重新)定义此环境,该方式使用 {multicols}{2} 布局并将计数器的格式切换为 A.、B.、...

\newenvironment{answerlist}%
  {\renewcommand{\labelenumii}{\Alph{enumii}.}\begin{multicols}{2}\begin{enumerate}}%
  {\end{enumerate}\end{multicols}}

当您使用 exams2pdf() 时,您可以在传递给 exams2pdf(..., template = ...).

的 LaTeX 主模板中像这样简单地定义 {answerlist} 环境

当您使用 exams2nops() 时,您可以 re-define {answerlist} 环境 on-the-fly 在 header:

multicol <- "\renewenvironment{answerlist}{\renewcommand{\labelenumii}{\Alph{enumii}.}\begin{multicols}{2}\begin{enumerate}}{\end{enumerate}\end{multicols}}"
exams2nops(..., header = multicol)

这产生:

根据答案列表中项目的典型长度,您当然也可以使用更多列,例如 {multicols}{4}.

此外,还有 built-in 选项 exams2nops(..., twocolumn = TRUE) 可将整个文档的布局切换为两栏(与仅答案列表相对)。下面包含演示屏幕截图。

最后,[=74] 的 R/exams 论坛中的此主题讨论了一些使用 LaTeX 环境 {paralist}{enumitem} 而不是 {multicols} 的更多变体=]: https://R-Forge.R-project.org/forum/forum.php?thread_id=33823&forum_id=4377&group_id=1337.