如何在exams2moodle()导出的Moodle试题中保留代码着色?
如何让exams包导出到Moodle的试题保留代码着色
可行方案
1. 启用exams2moodle的内置高亮参数
exams2moodle提供了highlight参数,可直接指定兼容Moodle的语法高亮引擎。设置为"kate"即可让Moodle识别代码块并应用内置的R语法着色:
exams2moodle("your_exam_file.Rmd", highlight = "kate", encoding = "UTF-8")
该参数会将试题中的Markdown代码块(r ... )转换为Moodle支持的<pre><code class="language-r">结构,自动触发Moodle的语法高亮。
2. 自定义模板添加高亮样式
如果内置高亮效果不符合需求,可以自定义Moodle输出模板,手动注入CSS样式来控制代码着色:
- 先找到exams包的默认Moodle模板路径:
system.file("templates", "moodle.html", package = "exams") - 复制模板并修改,在
<head>部分添加针对R代码的高亮CSS:.language-r { background: #f5f5f5; padding: 12px; border-radius: 4px; font-family: monospace; } .language-r .kw { color: #006699; font-weight: bold; } .language-r .st { color: #ba2121; } .language-r .co { color: #888888; font-style: italic; } - 调用exams2moodle时指定自定义模板:
exams2moodle("your_exam_file.Rmd", template = "custom_moodle_template.html", encoding = "UTF-8")
3. 确保试题代码块格式正确
试题文件中必须用标准的Markdown代码块包裹R代码,示例:
# 计算均值 data <- runif(100) mean(data)
不要用纯文本或非标准标记,否则Moodle无法识别代码类型。
额外注意
- 确认你的Moodle站点已启用语法高亮功能(默认是开启的,可在Atto编辑器设置中检查)。
- 不同Moodle版本对语法高亮的支持略有差异,建议用最新稳定版测试。
内容的提问来源于stack exchange,提问作者Markus Loecher
相关产品推荐
相关产品推荐

