概述
对于 Moodle 来说,表格格式并不是那么简单,无论是从 R/LaTeX 格式(Rnw,如您所做的)或 R/Markdown 格式(Rmd)的练习开始。下面我展示了你可以做的一些变化,尽管我对所有这些都不是 100% 满意。在所有情况下,该示例都是静态的,但可以通过将随机数插入相应的表中以“通常”的方式使其成为动态的。如果您在使解决方案之一动态化时遇到问题,请告诉我。
清楚的
当您开始使用 Rnw 时,您通常会{tabular}
手动或通过类似xtable
或knitr::kable
等的包生成对象。这些对象会转换为有效的 HTML 并导入到 Moodle 中,但不会保留带有线条(水平和/或垂直)的格式。从 Rmd 开始并使用纯 Markdown 标记对表格进行编码(再次手动或通过knitr::kable
等)时也是如此。
例子:
:
\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 中提供合适的表格类,以便我们可以<table>
将生成的 HTML 调整为<table class="mytable">
("mytable"
需要在 CSS 中提供类的位置)。我在 Moodle 的问题编辑器中查看了一下,但似乎不支持这种专用的 CSS 表格样式。如果有人对此了解更多,我将不胜感激。
HTML
最好的替代方法可能是从 Rmd 开始,但您可以直接使用完整的 HTML,而不是在 Markdown 中编写表格。这为您手动设置单元格样式提供了广泛的可能性。还有各种软件包可以帮助您解决这个问题。下面我使用knitr::kable
和的组合kableExtra::kable_styling
。后者提供的选项比我在下面使用的选项多得多。
例子:
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 必须使用这样的表格在每个练习上运行。
例子:
:
\begin{question}
Consider the following table:
<<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
需要用相应的![]()
Markdown 替换。
CSS
在 Moodle 中呈现表格的另一种选择是插入一个带有<table class="...">
要呈现的类的自定义样式表。佐藤健二在他的博客中提供了一个工作示例:https ://www.kenjisato.jp/en/post/2020/07/moodle-bordered-table/ 。我们计划将其与几个典型的类集成,exams2moodle()
这样就不必在每个练习中手动插入 CSS。但是,我们还没有采取行动来实施这一点。