在参数化 rmarkdown 报告中渲染图像会导致 pdflatex 失败

rendering images in parameterized rmarkdown reports causes pdflatex to fail

我按照指南 here and here 为不同的数据子集生成相同的报告。我已经得到它来生成打印不同输入参数的简单 PDF,但是当我尝试使用 ggplot 生成 pdf 时,出现错误。有谁知道它为什么抱怨?

错误(文件路径被修剪):

output file: AllDepartmentsReport.knit.md

"C:/Program Files/RStudio/bin/pandoc/pandoc" +RTS -K512m -RTS AllDepartmentsReport.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash --output pandoc13b0103e5bc9.tex --template "C:..\R\win-library.5\rmarkdown\rmd\latex\default-1.17.0.2.tex" --highlight-style tango --latex-engine pdflatex --variable graphics=yes --variable "geometry:margin=1in" --variable "compact-title:yes" ! Package pdftex.def Error: File `/autoReports/MATH_Report_files/figure-lat ex/unnamed-chunk-3-1.pdf' not found: using draft setting.

Error: Failed to compile /autoReports/MATH_Report.tex. See MATH_Report.log for more info.

用于提供参数的 Rscript generateReports.r:

library(knitr)
library(markdown)
library(rmarkdown)
library(tinytex)

departments <- c("MATH", "BIOL")


ReportGenerator <- function(department) {

  rmarkdown::render("./AllDepartmentsReport.Rmd",
                    params = list(department = dpt),
                    output_file = paste0(dpt,"_Report",".pdf"),
                    output_dir = "../autoReports",
                    clean = FALSE
                     )
}

# lapply(departments, ReportGenerator)

for (dpt in unique(departments) ){
  ReportGenerator(dpt)
}

带有报告信息的 Rmd AllDepartmentsReport:

---
output: pdf_document
params: 
  department: "MATH"
---

```{r, include = FALSE}
library(knitr)
library(tidyverse)
library(viridis)
library(purrr)
library(scales)
library(stringr)
library(lubridate)
library(markdown)
library(rmarkdown)
```

This is my report about 

```{r}
print(params$department)
paste(params$department)
print("hi")

ggplot(mtcars) + 
  geom_point(aes(x=mpg, y=hp))

```

我下载并使用了miktex。如果我从 RMD 编织它会正确生成。如果我 运行 没有 ggplot 的脚本它就可以工作。我还应该注意,它说找不到的文件实际上在那里。我也在使用 Windows 10、64 位。

我试过的一些文章:

编辑:

我尝试使用渲染中的选项,如 intermediates_dir = 和 knit_root_dir,但似乎无法获得有效的组合。只能在同一个文件夹下编译。

通过将路径指定为 output_file 名称的一部分而不是使用 output_dir,我可以成功地将创建的 pdf 保存到不同的文件夹。如下所示:

  rmarkdown::render(input = "reportMaker.Rmd",
                    params = list(department = dpt),
                    output_file = paste0("../autoReports/",dpt,"_Report",".pdf"), 
                    output_format = "pdf_document"

                     )