exams2pdf使用双模板报错及exams2nops自定义双模板功能问询
1. exams2pdf()报错原因及解决方法
报错的核心原因有两个:
- 传入的
name参数长度和template参数长度不匹配:你指定了template = c("exam", "solution")两个模板,意味着要生成2套独立的PDF文件,但是name仅传入了单个值icvar,函数拼接输出文件路径时第二个模板对应的输出路径生成异常,导致调用base::file()时传入了无效的路径参数。 - 指定的
texdir = "tmptex"目录不存在:如果tmptex文件夹没有提前创建,函数无法写入中间tex文件,也会触发该报错。
对应的解决方法:
# 第一步:先创建临时tex目录 dir.create("tmptex", showWarnings = FALSE) # 第二步:给name参数传入两个和template对应的文件名前缀 exams2pdf(file = "ICvar.Rmd", name = c("icvar_exam", "icvar_solution"), engine = "knitr", verbose = FALSE, texdir = "tmptex", template = c("exam", "solution") )
2. exams2nops()双模板生成试卷/答案的实现方法
exams2nops()本身不支持像exams2pdf()一样单次传入多个template参数批量生成两份PDF,该函数是专门为标准化机读试卷设计的,逻辑和通用的exams2pdf()不同。
要实现生成试题、答案两份PDF的需求,你可以分两次调用exams2nops()实现,示例如下:
# 生成试题卷 exams2nops(file = "ICvar.Rmd", name = "icvar_exam", solution = FALSE, template = "your_exam_template.tex" # 其余你需要的参数 ) # 生成答案卷 exams2nops(file = "ICvar.Rmd", name = "icvar_solution", solution = TRUE, template = "your_solution_template.tex" # 其余和试题卷一致的参数 )
设置solution=TRUE时会自动在试卷中嵌入答案解析内容,你可以分别给两次调用传入不同的自定义模板即可实现和exams2pdf()一致的效果。
内容的提问来源于stack exchange,提问作者JPMD
相关产品推荐
相关产品推荐

