使用R/exams包生成Moodle习题时静态图片无法显示问题
解决R exams包生成Moodle/HTML习题时图片不显示的问题
问题分析
你遇到的问题是:使用include_supplement添加静态图片后,exams2pdf能正常显示图片,但exams2html和exams2moodle无法显示,还重复显示图片标题。核心原因大概率是路径解析错误(文件名含特殊字符、绝对路径干扰、同步目录路径异常)或补充文件复制逻辑未生效。
解决方案
1. 清理文件名与路径
文件名中的空格、特殊字符(如括号、连字符)会导致URL解析异常,建议重命名图片为无特殊字符的名称,比如将Saving R Script File.png改为Saving_R_Script_File.png。
同时,避免将文件放在OneDrive等同步目录(路径含特殊标识),移到本地普通目录(如C:/R-Exams/STAT110/Q2),减少路径解析干扰。
2. 简化include_supplement调用
因为图片与Rmd文件在同一目录,无需指定dir参数,直接调用即可:
exams::include_supplement("Saving_R_Script_File.png")
3. 调整Markdown图片引用
修改Rmd中的图片引用,使用重命名后的文件名:

4. 显式指定输出目录
调用exams2html或exams2moodle时,通过dir参数指定输出目录,确保补充图片被正确复制到输出目录的子文件夹中:
生成HTML习题
exams2html("test_qn.Rmd", dir = "html_output")
执行后,图片会被复制到html_output/images目录,HTML文件会自动引用该路径。
生成Moodle习题
exams2moodle("test_qn.Rmd", output = "moodle_question.xml", dir = "moodle_output")
图片会被复制到moodle_output/images,生成的XML文件会包含正确的图片路径,导入Moodle后即可正常显示。
5. 验证工作目录
确保运行exams2html/exams2moodle时,R的工作目录是Rmd文件所在的目录(可通过setwd()切换),或直接用完整路径指定Rmd文件:
exams2moodle("C:/R-Exams/STAT110/Q2/test_qn.Rmd", output = "moodle_question.xml", dir = "moodle_output")
内容的提问来源于stack exchange,提问作者Alex Michael
相关产品推荐
相关产品推荐

