bookdown中的knitr :: include_graphics不会渲染图像

时间:2017-11-07 10:05:04

标签: r knitr r-markdown bookdown

我正在尝试将.png文件包含在我使用bookdown呈现的文件中。 knitr::include_graphics()应该是要走的路。

代码:

```{r fig1, fig.cap='My Caption', echo=FALSE, message=FALSE, warning=FALSE}
knitr::include_graphics("./Figures/My Figure.png")
```

在.Rmd文件中,我可以运行我的r块,然后渲染下面的图像。所以,路径应该是正确的。但是,当我编织章节或渲染整本书时,图形不会被渲染。

难道我的其他一些选择是否超越了这个数字?下面是我的index.Rmd文件的YAML标题,以及我的_output.yml文件中的代码。

--- 
title: "My Title"
author: "My Name"
date: "`r Sys.Date()`"
output: 
  bookdown::gitbook:
    split_by: section
  bookdown::pdf_book:
    keep_tex: no
documentclass: book
classoption: openany
bibliography: [Mybib.bib]
csl: Mycsl.csl
biblio-style: apalike
link-citations: yes
description: "My Description"
---

bookdown::gitbook:
  config:
    toc:
      before: |
        <li><a href="./">Short Title</a></li>
bookdown::pdf_book:
  latex_engine: xelatex
  citation_package: natbib
bookdown::epub_book: default

1 个答案:

答案 0 :(得分:5)

图像文件路径中有空格。

文件名中的空格在R中不是问题,这就是您能够在RStudio中看到图像的原因。然而,knitr有点复杂,因为它实际上执行了许多不同的程序(R,pandoc&amp; LaTeX)。

正如knitr指南中所解释的那样,knitr::include_graphic函数实际上会执行不同的结果,具体取决于输出是HTML,PDF还是md。在构建PDF时,它通过LaTeX传递图像并使用函数\includegraphic{}插入图片。正如here所述:

  

“图像的文件名不应包含空格或多个点”

删除空格将解决问题,通常最好在R中避免它们,即使它们在技术上是允许的。

感谢@pzhao最初突出显示问题。