r-exams:全自动问题生成中的“元信息”警告:它们可以被删除吗?它们重要吗?(代码工作正常)

jdg4fx2g  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(104)

我正在编写一些代码来尽可能自动化生成问题的过程。这涉及到在文件的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.头文件格式是用来处理这种情况的吗(还有其他用途)?

9gm1akwq

9gm1akwq1#

您已正确识别问题的来源:你的````{r}代码块不仅被求值(以创建example变量),而且还被逐字打印到生成的Markdown文件中。然后包会感到困惑,因为extype`等在文档中出现了两次:一次在逐字代码块中,一次在元信息部分中。尽管前者被忽略,而只使用后者,因此练习正确地工作。
因此,另一种方法是使用您指定的扩展代码块头:

```{r data generation, echo = FALSE, results = "hide"}

这为代码块提供了一个标签(“数据生成”),这是完全可选的,抑制了代码输入(echo = FALSE,这是这里的重要位),并抑制了任何输出(反正这里没有)。
一个更短的声明也可以做到这一点:

```{r, include = FALSE}

如果要在处理.Rmd文件后检查.md文件中的内容,请尝试

xweave("test.Rmd")

然后检查得到的test.md
话虽如此,Meta-information之外的extype等确实应该被忽略。目前,这显然没有做到,因为一些基础设施与.Rnw阅读器共享,而.Rnw阅读器没有显式的{metainformation}环境。不过,我会看看潜在的修复方法。

相关问题