我正在编写一些代码来尽可能自动化生成问题的过程。这涉及到在文件的r代码部分中构建问题。用于说明该场景的MWE可以是:
```{r}
example <- paste0(
"Question\n========\n\nHello!"
, "\n##ANSWER1## ##ANSWER2##"
, "\n\nSolution\n========"
, "\n* Sol1\n* Sol2"
, "\n\nMeta-information\n================"
, "\nexname: test"
, "\nextype: cloze"
, "\nexsolution: SOL1|SOL2"
, "\nexclozetype: string|string"
)
cat("exercise:\n", example, sep='', file=stderr())
r example
把这段代码放入文件“test.Rmd”后,在RStudio中执行以下命令:
exams2moodle("test.Rmd")
会产生以下警告输出:
Warning messages:
1: In extract_command(x, "extype", markup = markup) :
command‘extype:’occurs more than once, last instance used
2: In extract_command(x, "exname", markup = markup) :
command‘exname:’occurs more than once, last instance used
3: In extract_command(x, "exsolution", markup = markup) :
command‘exsolution:’occurs more than once, last instance used
4: In extract_command(x, "exclozetype", markup = markup) :
command‘exclozetype:’occurs more than once, last instance used
代码运行正常,如标题所述。虽然我不完全理解以下标题的含义(我在r-examines web上找不到任何文档),但我知道将其放在`test.Rmd`文件的开头而不是````{r}`简单文件可以删除警告输出(您可以使用`echo = <BOOLEAN>`参数控制是否显示警告):
所以问题是:
1.我应该关注这些警告,还是可以忽略它们?
此外,与此相关的还有:
1.头文件格式是用来处理这种情况的吗(还有其他用途)?
1条答案
按热度按时间9gm1akwq1#
您已正确识别问题的来源:你的````{r}
代码块不仅被求值(以创建
example变量),而且还被逐字打印到生成的Markdown文件中。然后包会感到困惑,因为
extype`等在文档中出现了两次:一次在逐字代码块中,一次在元信息部分中。尽管前者被忽略,而只使用后者,因此练习正确地工作。因此,另一种方法是使用您指定的扩展代码块头:
这为代码块提供了一个标签(“数据生成”),这是完全可选的,抑制了代码输入(
echo = FALSE
,这是这里的重要位),并抑制了任何输出(反正这里没有)。一个更短的声明也可以做到这一点:
如果要在处理.Rmd文件后检查.md文件中的内容,请尝试
然后检查得到的
test.md
。话虽如此,
Meta-information
之外的extype
等确实应该被忽略。目前,这显然没有做到,因为一些基础设施与.Rnw阅读器共享,而.Rnw阅读器没有显式的{metainformation}
环境。不过,我会看看潜在的修复方法。