You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:15:03