微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R/exams 中的答案列表由几列分布以节省纸张空间

如何解决R/exams 中的答案列表由几列分布以节省纸张空间

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

A.答案 1. C. 答案 3.

B.答案 2. D. 答案 4.

在 LaTeX 中,我使用了 multicol 包。 R/考试也可以这样做吗?

解决方法

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

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

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

{answerlist} 的呈现取决于文档标题中此环境的定义。 exams2nops() 中的默认值以及随包提供的 exams2pdf() 的演示模板是:

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

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

default answerlist

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

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

当您使用 exams2pdf() 时,您可以简单地在传递给 {answerlist} 的 LaTeX 主模板中定义这样的 exams2pdf(...,template = ...) 环境。

当您使用 exams2nops() 时,您可以在 {answerlist} 中即时重新定义 header 环境:

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

这产生:

answerlist with multicols

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

此外,还有内置选项 exams2nops(...,twocolumn = TRUE) 可将整个文档的布局切换为两列(而不是仅答案列表)。下面包含演示屏幕截图。

最后,在 R-Forge 的 R/exams 论坛中的此主题中讨论了更多使用 LaTeX 环境 {paralist}{enumitem} 而不是 {multicols} 的变体:{{3 }}。

https://R-Forge.R-project.org/forum/forum.php?thread_id=33823&forum_id=4377&group_id=1337

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。