如何在R Exams的schoice题型中使用表格作为选项?
解决schoice题型中pandoc格式表格选项的问题
核心需求
要创建schoice题型习题,5个选项均为带CDF的表格(非图片形式),要求:
- 使用pandoc格式生成表格
- 支持数学模式(如含$\leq$的列名)
解决方案
1. 批量生成支持数学公式的pandoc表格
定义函数批量创建符合要求的CDF表格,通过escape = FALSE保留LaTeX数学符号,让pandoc正确渲染:
# 封装CDF表格生成函数 create_cdf_table <- function(cdf_val, condition = "$x \\leq 0$") { data.frame( "F(x)" = condition, "累积概率" = cdf_val ) |> kableExtra::kbl(format = "pandoc", escape = FALSE) } # 生成5个选项的表格列表 sc$questions <- list( create_cdf_table("0", "$x < -1$"), create_cdf_table("$\\frac{1}{3}$", "$-1 \\leq x < 0$"), create_cdf_table("$\\frac{2}{3}$", "$0 \\leq x < 1$"), create_cdf_table("1", "$x \\geq 1$"), create_cdf_table("$\\frac{1}{2}$", "$x \\leq 0$") )
2. 用answerlist输出表格选项
通过results = "asis"让R直接输出Markdown内容,markup = "markdown"确保pandoc表格被正确解析:
```{r questionlist, echo = FALSE, results = "asis"} answerlist(unlist(sc$questions), markup = "markdown")
### 关键说明 - `escape = FALSE`:禁止kable转义LaTeX语法,确保$\leq$、分数等数学表达式正常渲染 - 用列表存储表格:避免字符串拼接时破坏pandoc表格的格式结构 - 函数封装:简化批量创建不同CDF表格的操作,便于后续修改调整 内容的提问来源于stack exchange,提问作者Sinval
相关产品推荐
相关产品推荐

