使用r/exams生成PDF笔试题目时,cloze题##ANSWERn##渲染异常求助
解决r/exams中Cloze题型PDF渲染占位符的问题
核心解决方法
r/exams默认不会自动将##ANSWERn##渲染为可视化占位符,需通过自定义题目代码或LaTeX模板实现需求:
1. num类型题目:生成空白横线
直接在cloze题目中替换##ANSWERn##为LaTeX下划线命令:
- 固定长度横线:
The unit price is \rule{2cm}{0.15mm}.
- 自适应长度横线(填满剩余行宽):
The unit price is \hrulefill.
2. schoice类型题目:生成选择框
两种实现方式:
- 纯文本视觉方框(无需额外宏包):
[ ] Yes [ ] No
- 可勾选LaTeX方框(需在模板中引入宏包):
先在自定义LaTeX模板的导言区添加:
\usepackage{checkbox}
然后在题目中写:
\checkbox Yes \checkbox No
3. 批量统一格式:自定义LaTeX模板
如果需要所有cloze题目统一占位符样式,可修改全局模板:
- 查看默认模板路径:
exams::tex_template() - 复制模板并添加自定义命令到导言区:
\newcommand{\numblank}{\rule{2cm}{0.15mm}} \newcommand{\choicebox}{[ ]}
- 在题目中用自定义命令替代
##ANSWERn##,或通过R代码批量替换:
q <- exams::read_exam("my_cloze_question.Rmd") # 替换num类型占位符 q$question <- gsub("##ANSWER([0-9]+)##", "\\numblank", q$question) # 替换schoice类型占位符(需区分不同类型时单独处理) q$question <- gsub("##ANSWER([0-9]+)##", "\\choicebox", q$question)
- 生成PDF时指定自定义模板:
exams::exams2pdf("my_cloze_question.Rmd", template = "my_custom_template.tex")
内容的提问来源于stack exchange,提问作者Massimo2013
相关产品推荐
相关产品推荐

