exams2pdf无法显示绘图,求兼容exams2html/exams2nops的方案
解决方案:兼容exams2html与exams2pdf/nops的图片处理方式
核心思路
放弃手动生成PNG再调用include_graphics的方式,改用knitr自动生成图片并通过exams的资源管理机制处理文件,确保HTML和PDF输出都能正确识别图片资源。
修改后的myquestion.Rmd代码
```{r plot-code, echo=FALSE, results="hide", fig.width=4, fig.height=3, fig.path="figure/"} x <- 1:5 y <- 1:5 plot(x, y)
Question
What is this plot?
# 无需手动指定图片路径,knitr自动关联上方代码块生成的图片
Answerlist
- Scatterplot.
- Histogram.
Meta-information
exname: Q01
extype: schoice
exsolution: 10
exshuffle: FALSE
## 关键修改点说明 - 移除手动`png()`/`dev.off()`代码:knitr会自动完成图片生成、命名和路径管理,避免手动文件操作导致的路径不一致问题。 - 添加`fig.path="figure/"`参数:指定图片输出到子目录,exams编译PDF时会自动扫描该目录并将图片作为补充文件纳入编译流程。 - 图片显示代码块留空:knitr会自动关联上方绘图代码生成的图片,无需手动调用`include_graphics`,同时兼容HTML和PDF的渲染逻辑。 ## 批量题库优化建议 针对数百道题的题库场景,统一遵循以下规则可提升兼容性和效率: - 所有绘图逻辑都用knitr自动生成,禁止手动创建图片文件。 - 保持`fig.path`参数统一(如均设为`figure/`),方便exams批量处理资源文件。 - 避免硬编码图片文件名,完全依赖knitr自动命名机制,减少路径错误。 ## 验证命令 分别运行以下命令测试不同输出格式: ```r # 测试HTML输出 exams2html("myquestion.Rmd") # 测试PDF输出 exams2pdf("myquestion.Rmd") # 测试NOPS答题卡输出 exams2nops("myquestion.Rmd")
修改后三种输出方式均可正确渲染图片,无需针对不同格式编写差异化代码。
内容的提问来源于stack exchange,提问作者Bruce James
相关产品推荐
相关产品推荐

