rticles包PLOS模板编译失败 LaTeX报错Argument of  has an extra }
问题根因
该故障并非本地安装包损坏或模板文件损坏导致,属于rticles包PLOS模板与高版本Pandoc(RStudio 2022.07及之后版本自带的Pandoc≥2.19即可触发)的已知兼容性问题:Pandoc默认会为所有章节标题自动生成\hypertarget锚点代码,而PLOS模板的LaTeX类文件重定义了\section命令的解析逻辑,无法正确识别锚点代码末尾的%注释符,导致大括号匹配逻辑错乱,抛出"extra }"编译错误。
报错信息中出现的乱码"Â"是Windows环境下命令行编码不匹配导致的显示异常,并非TeX文件中存在非法字符。你排查到的两行TeX代码在标准LaTeX语法下是合法的,不需要手动修改编译生成的.tex文件——每次R Markdown编译都会覆盖生成新的TeX文件,手动修改无法永久解决问题。
修复方案
按优先级从高到低可选择以下任意一种方法解决:
- 升级
rticles包到最新正式版
该兼容性问题已经在官方更新中修复,直接在R控制台运行以下命令完成升级,重启RStudio后重新从模板新建PLOS文档即可正常编译:
如果需要使用开发版修复,可运行install.packages("rticles")remotes::install_github("rstudio/rticles")安装GitHub上的最新开发版本。 - 通过YAML参数临时规避
如果暂时无法升级rticles包,可打开R Markdown文件顶部的YAML配置块,在plos_article输出配置下添加anchor_sections: false参数,关闭Pandoc自动生成章节锚点的逻辑,从根源上避免冲突语法生成,配置示例如下:
保存配置后重新编译文档即可正常输出,不需要修改其他内容。output: rticles::plos_article: anchor_sections: false - 降级Pandoc版本(不推荐)
可手动将RStudio内置的Pandoc替换为2.18及更早版本,该方法会导致其他R Markdown模板无法使用Pandoc高版本新特性,仅作为前两种方案都不可用时的备选。
内容的提问来源于stack exchange,提问作者Frans Rodenburg
相关产品推荐
相关产品推荐

