R-exams使用问题:如何调整exams2nops()生成试卷的试题区边距?
解决exams2nops()自定义边距仅第一页生效的问题
问题原因
你通过
header参数传入的\usepackage[margin=1cm]{geometry}仅在LaTeX导言区生效,exams2nops内部会在文档正式开始(\begin{document})后,调用默认模板的geometry配置覆盖导言区设置,因此只有未被覆盖的第一页会应用自定义边距。
解决方案
- 方法1:使用内置
geometry参数(推荐,适用于exams 2.4-0及以上版本)
直接给exams2nops的geometry参数传入边距配置,函数会自动将配置全局应用到所有页面,无需手动编写LaTeX命令:exams2nops(..., geometry = list(margin = "1cm")) - 方法2:用
\AtBeginDocument钩子覆盖默认配置(兼容所有版本)
在header参数中添加钩子,让你的边距设置在exams内部配置加载完成后再执行,即可实现全局生效。注意R字符串中的反斜杠需要转义,要写为双反斜杠:exams2nops(..., header = "\\usepackage{geometry} \\AtBeginDocument{\\geometry{margin=1cm}}") - 方法3:自定义NOPS模板(适合需要大幅调整页面格式的场景)
- 找到官方默认的NOPS LaTeX模板,默认路径可通过
system.file("nops", "nops.tex", package = "exams")获取 - 复制模板到你的工作目录,修改模板里的
\geometry相关参数为你需要的边距 - 调用
exams2nops时指定修改后的模板:
exams2nops(..., template = "your-custom-nops.tex") - 找到官方默认的NOPS LaTeX模板,默认路径可通过
内容的提问来源于stack exchange,提问作者Piotr Gawroński
相关产品推荐
相关产品推荐

