You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让RMarkdown避免缩短路径或使用相对路径解决LaTeX编译报错

故障根因

Windows系统会自动对长度超标的路径生成8.3格式的短路径(示例中的LONGUS~1),而LaTeX的graphicx包无法识别带波浪号的短路径格式,因此编译报错。单独运行Rmd时未触发报错是因为默认工作目录不会使用带短路径的临时目录。

修复方案

方案1:修正Shiny端render调用配置(优先选择,无需修改Rmd文件)

修改downloadHandler中的代码,先将临时目录转换为标准长路径,同时强制knitr生成相对路径的图片引用:

output$downBtn <- downloadHandler(
    filename = "full_report.pdf",
    content = function(file) {
        # 第一步:将临时目录转换为Windows标准长路径,消除短路径格式
        temp_dir <- normalizePath(tempdir(), winslash = "/", mustWork = TRUE)
        report_path <- file.path(temp_dir, "test_report.Rmd")
        file.copy("test_report.Rmd", report_path, overwrite = TRUE)

        rmarkdown::render(
            input = report_path,
            output_file = file,
            params = list(input = input),
            envir = new.env(parent = globalenv()),
            intermediates_dir = temp_dir,
            knit_root_dir = temp_dir,
            # 强制生成相对路径的图片目录
            output_options = list(fig_path = "figure/")
        )
    }
)

方案2:Rmd端全局配置(适用于需要统一管控路径的场景)

在test_report.Rmd的首个代码块中添加knitr全局配置,强制所有图片使用相对路径:

```{r setup, include=FALSE}
knitr::opts_chunk$set(fig.path = "./figure/")
# 禁止生成绝对路径的图片引用
knitr::opts_knit$set(base.url = NULL, base.dir = getwd())
两种方案二选一即可,无需同时配置。

内容的提问来源于stack exchange,提问作者NickCHK
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 19:48:01