带有R考试的Moodle的表的问题的不同副本

问题描述 投票:1回答:1

我想用随机生成的数据生成一个问题的多个副本,以便上传到Moodle并进行测验。这个问题将包括一个表格,该表格取决于每次生成的数据。如何才能做到这一点?我尝试使用xtable,但将其上传到Moodle时会生成没有边距和格式的表。我也尝试了ggpubr,但无法包含该表。

例如,我可以生成一个'.png',并使用'include_supplement'和\ includegraphics作为.Rnw文件被导入到文件中。当仅生成一个副本时,此功能很有用,因为导入的文件只有一个。但是,如果必须一次创建具有不同数据的问题的多个副本,会发生什么?

任何帮助将不胜感激。谢谢。

moodle r-exams
1个回答
0
投票

概述

对于Moodle,表格格式并不是那么简单,无论是从R / LaTeX格式(如您所愿,为Rnw)开始练习还是以R / Markdown格式(Rmd)为起点。下面,我展示了您可以做的几种变体,尽管我对所有这些都不满意。在所有情况下,该示例都是静态的,但可以通过将随机数插入相应的表中以“通常”的方式使其变为动态。如果您在使一种解决方案成为动态解决方案时遇到问题,请告诉我。

普通

[在Rnw中启动时,通常会手动或通过{tabular}xtable等程序包生成knitr::kable对象。这些将转换为有效的HTML并导入到Moodle中,但使用行格式(水平和垂直) /或垂直)。在Rmd中启动并使用纯Markdown标记对表进行编码(再次手动或通过knitr::kable等)时,也是如此。

示例:

plain table

Rnw:

\begin{question}
Consider the following table:

\begin{tabular}{lrr}
\hline
Name & Min & Max \\
\hline
Foo  & 0   & 1   \\
Bar  & 0   & 100 \\
\hline
\end{tabular}

What is the overall maximum?
\end{question}

\exname{Table}
\extype{num}
\exsolution{100}
\extol{0.01}

Rmd:与上面类似,但Markdown中的表为:

| Name | Min | Max |
|:-----|----:|----:|
| Foo  |   0 |   1 |
| Bar  |   0 | 100 |

[其他一些学习管理系统(例如OpenOLAT)在CSS中提供了合适的表类,因此我们可以将结果HTML中的<table>调整为<table class="mytable">(其中需要在"mytable"类中提供CSS)。我在Moodle的问题编辑器中浏览了一下,但是似乎不支持这种专用的CSS表样式。如果有人对此有所了解,我将不胜感激。

HTML

最好的替代方法可能是从Rmd开始,但是不用在Markdown中编写表,您可以直接使用完整的HTML。这为您手工设置单元格提供了广泛的可能性。也有各种软件包可以帮助您。下面,我使用knitr::kablekableExtra::kable_styling的组合。后者提供的选项比我在下面使用的选项更多。

示例:

table-kable

Rmd:

Question
========
Consider the following table:

```{r, echo = FALSE, results = "asis"}
d <- data.frame(
  Name = c("Foo", "Bar"),
  Min = c(0, 1),
  Max = c(0, 100)
)
kableExtra::kable_styling(
  knitr::kable(d, format = "html", booktabs = TRUE),
  bootstrap_options = "bordered", full_width = FALSE, position = "left")
```

What is the overall maximum?

Meta-information
================
exname: Table
extype: num
exsolution: 100
extol: 0.01

Rnw:我想在Rnw练习中应该有相同的技巧,即在LaTeX练习中包含HTML,并在通过pandoc转换为HTML时保留该技巧。但是,我没有找到正确的标志。因此,这目前仅适用于Rmd练习。

乳胶

您还可以使用LaTeX排版表格,并使用pdfLaTeX进行渲染,然后将输出转换为PNG或SVG。 tex2image()程序包中的exams功能支持此功能。可以在Rnw和Rmd练习中使用它,并且必须在练习中包括生成的图像。缺点是表格和主要问题之间的字体等有所不同(并且您必须使用tex2image()中的字体大小和分辨率进行播放)。而且,这相对较慢,因为必须在带有此类表的每次练习中运行pdfLaTeX。

示例:

table-latex

Rnw:

\\开始{question}考虑下表:

<<echo=FALSE, results=hide>>=
tab <- '\\begin{tabular}{lrr}
\\hline
Name & Min & Max \\\\
\\hline
Foo  & 0   & 1   \\\\
Bar  & 0   & 100 \\\\
\\hline
\\end{tabular}'
tex2image(tab, name = "tab", dir = ".", pt = 8, resize = 250)
@
\includegraphics{tab.png}

What is the overall maximum?
\end{question}

\exname{Table}
\extype{num}
\exsolution{100}
\extol{0.01}

Rmd:可以在Rmd中使用生成图像的相同代码块。仅需要将\includegraphics替换为相应的![]()降价。

© www.soinside.com 2019 - 2024. All rights reserved.