**rmarkdown** 2024至2026年更新回顾

**rmarkdown** 2024至2026年更新回顾

💡 原文英文,约1300词,阅读约需5分钟。
📝

内容提要

rmarkdown v2.26–v2.32(2024–2026)修复了渲染时可能覆盖源文件、绝对图片路径、并行渲染临时文件冲突等问题;改进Beamer的LaTeX依赖声明、参数多选控件和表格行CSS类;支持非HTML格式的base64图片;PDF辅助文件改写入output_dir并支持只读目录;lib_dir可指向output_dir外;弃用Pandoc 1.x,改用MIT许可证。

🔎

延伸解读

渲染安全与稳定性提升

本次更新修复了多个可能影响渲染稳定性的问题。例如,在特定条件下渲染可能静默覆盖输入的.Rmd文件,现已修复。并行渲染时,由于共享临时目录,进程可能误删彼此临时文件,现在临时文件按进程跟踪,避免了相互干扰。此外,当Pandoc不可用时,pandoc_convert()会立即抛出明确错误,而不是静默失败,便于快速定位问题。

输出路径与依赖管理改进

针对输出目录和依赖管理的痛点,更新允许自定义HTML依赖文件夹后缀,避免在OneDrive或Google Drive上被随机删除。绝对图片路径在设置output_dir时能正确转换为相对路径。渲染PDF时,LaTeX辅助文件现在写入output_dir,即使输入目录只读也能成功渲染。lib_dir参数不再要求必须是output_dir的子目录,支持跨目录共享库。

格式与交互功能增强

Beamer演示文稿现在可以通过extra_dependencies参数或代码块声明LaTeX依赖,方便添加longtable等宏包。参数多选时,交互对话框使用多选下拉框而非单选按钮,解决了无法多选的问题。表格行CSS类在Pandoc 3.2.1后得到恢复,确保原有样式继续生效。base64图片现在也支持非HTML格式输出。

兼容性与许可证变更

rmarkdown已弃用对Pandoc 1.x及早期2.x的支持,并移除了过时的语法高亮变通方法。同时,许可证从GPL-3变更为MIT,这可能会影响部分用户的使用和分发。这些变更反映了项目对现代工具链的适配,并简化了代码维护。

Q&A

rmarkdown 在 2024 至 2026 年有哪些主要更新?

rmarkdown v2.26–v2.32 修复了渲染时可能覆盖源文件、绝对图片路径、并行渲染临时文件冲突等问题;改进 Beamer 的 LaTeX 依赖声明、参数多选控件和表格行 CSS 类;支持非 HTML 格式的 base64 图片;PDF 辅助文件改写入 output_dir 并支持只读目录;lib_dir 可指向 output_dir 外;弃用 Pandoc 1.x,改用 MIT 许可证。

rmarkdown 渲染时覆盖源文件的问题修复了吗?

是的,该问题已修复(#2534)。此前在特定条件下,渲染过程可能静默覆盖输入的 .Rmd 文件。

如何解决 rmarkdown 在 OneDrive 或 Google Drive 上 _files 目录被随机删除的问题?

可以在 .Rprofile 中设置选项 rmarkdown.files.suffix 来更改后缀,例如 options(rmarkdown.files.suffix = "_rmdfiles"),这样目录名会变为 <name>_rmdfiles/ 而不是 <name>_files/。

rmarkdown 现在支持在 Beamer 幻灯片中声明 LaTeX 依赖吗?

支持。可以通过新的 extra_dependencies 参数在 YAML 中声明,例如 output: beamer_presentation: extra_dependencies: ["booktabs", "longtable"],也可以在代码块中使用 knitr::asis_output 和 rmarkdown::latex_dependency 内联声明。

rmarkdown 对 Pandoc 版本的支持有什么变化?

rmarkdown 已弃用对 Pandoc 1.x 和早期 2.x 的支持,移除了多个内部版本检查。Pandoc 2.8 于 2019 年发布,因此实际影响用户很少(#2623)。

rmarkdown 的许可证有什么变化?

rmarkdown 现在使用 MIT 许可证,之前是 GPL-3(#2615)。

🏷️

标签

➡️

继续阅读