Search code examples
rlatexr-markdownknitrtex-live

can't compile RMarkdown pdf with image in child .Rmd - LaTeX Error - image file not found


I'm compiling a pdf using child .Rmd's. The example_child.Rmd calls an image using knitr::include_graphics() and compiles fine on its own, but trying to compile example_main.Rmd produces the following error.

TeX Live 2019 is frozen forever and will no
longer be updated.  This happens in preparation for a new release.

If you're interested in helping to pretest the new release (when
pretests are available), please read https://tug.org/texlive/pretest.html.
Otherwise, just wait, and the new release will be ready in due time.
! LaTeX Error: File `images/example_image' not found.

Error: LaTeX failed to compile example_main.tex. See https://yihui.org/tinytex/r/#debugging for debugging tips. See example_main.log for more info.
Execution halted

example_main.Rmd compiles fine when only calling child documents that don't call images (it calls data from sub-folders just fine). Any help would be appreciated! All the relevant info about my session and files is below:

My working directory is "/Users/example_project"

The example_main.Rmd (file path "/Users/example_project/folder_1/example_main.Rmd") YAML and code-chunk are as follows:

---
output: 
  pdf_document:
    latex_engine: xelatex
---

```{r child = './folder_2/example_child.Rmd'}
```

The example_child.Rmd (file path "/Users/example_project/folder_1/folder_2/example_child.Rmd") YAML and code chunk are as follows:

---
output: pdf_document
---

```{r example, echo = FALSE, out.width='80%', out.height='50%'}
knitr::include_graphics("./images/example_image.png")
```

The full image file path is "/Users/example_project/folder_1/folder_2/images/example_image.png".

My session info is as follows:

R version 3.6.3 (2020-02-29)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Mojave 10.14.6, RStudio 1.2.5033

Locale: en_US.UTF-8 / en_US.UTF-8 / en_US.UTF-8 / C / en_US.UTF-8 / en_US.UTF-8

Package version:
  base64enc_0.1.3 digest_0.6.25   evaluate_0.14   glue_1.4.0      graphics_3.6.3  grDevices_3.6.3 highr_0.8      
  htmltools_0.4.0 jsonlite_1.6.1  knitr_1.28.2    magrittr_1.5    markdown_1.1    methods_3.6.3   mime_0.9       
  Rcpp_1.0.4      rlang_0.4.5     rmarkdown_2.1   stats_3.6.3     stringi_1.4.6   stringr_1.4.0   tinytex_0.21.1 
  tools_3.6.3     utils_3.6.3     xfun_0.12       yaml_2.2.1     

Pandoc version: 2.3.1

Solution

  • You can reconstruct the path to the image using the working directory of the child document (in example_child.Rmd)

    ---
    output: pdf_document
    ---
    
    ```{r example, echo = FALSE, out.width='80%', out.height='50%'}
    knitr::include_graphics(paste0(getwd(), "/images/example_image.png"))
    ```
    

    It seem that this is an issue with 'grandchild' documents similar to that described here and here