ioslides 演示文稿不呈现 png 图像文件

ioslides presentation doesn't render png image file

下面是一个小型 ioslides 演示文稿,其中一张幻灯片中嵌入了闪亮的应用程序。另一张幻灯片尝试显示 png 图像文件。 当我在 RStudio 中 "Run Presentation" 时,png 图像不呈现,我收到警告:

Warning in file.create(to[okay]) : cannot create file 'C:\Users\John\AppData\Local\Temp\Rtmpkty0sF\file3b247a612422_files/C:/Develop/data/smile.png', reason 'Invalid argument'

如果我删除闪亮的代码,并从 YAML 中删除 "runtime: shiny",则 png 图像会正确呈现,而不会出现警告。在这种情况下,RStudio 显示一个 "knit" 演示文稿的按钮,而不是 "Run Presentation" 闪亮应用程序的按钮。

这里报告了类似的问题:

这里:

Error adding images in ioslides

这是我的设置: Windows9、 RStudio 版本 0.99.473, 包:rmarkdown 版本:0.7.3, 包:闪亮版本:0.12.2.9001, 包:httpuv 版本:1.3.3,

这是我的 RMarkdown 代码:

---
title: "ioslides Presentation with Shiny"
author: "John Doe"
date: "August 27, 2015"
output: 
  ioslides_presentation: 
    widescreen: true
    smaller: true
    transition: 0.1
    self_contained: true
runtime: shiny
---

## Slide with Embedded Inline Shiny Application

Below is an embedded inline shiny application:
```{r, echo=FALSE}
inputPanel(
  selectInput("n_breaks", label = "Number of bins:",
              choices = c(10, 20, 35, 50), selected = 20),

  sliderInput("bw_adjust", label = "Bandwidth adjustment:",
              min = 0.2, max = 2, value = 1, step = 0.2)
)

renderPlot({
  hist(faithful$eruptions, probability = TRUE, breaks = as.numeric(input$n_breaks),
       xlab = "Duration (minutes)", main = "Geyser eruption duration")

  dens <- density(faithful$eruptions, adjust = input$bw_adjust)
  lines(dens, col = "blue")
})
```

## Slide With a Smiling Face

![smiling_face](C:/Develop/data/smile.png)

JJ Allaire(RStudio 的 CEO!)在此处提供了 GitHub 的答案:
jjallaire answers

我总结一下,如果 ioslides 演示文稿包含嵌入式 shiny 应用程序,则它要求将图像文件存储在与 .Rmd 文件相同的目录中,或者存储在子目录中,而不是单独的目录中分支。应该使用相对文件路径而不是绝对路径来引用图像文件。这是因为当编织(解析)ioslides 演示文稿时,它们被存储为包含 .js 和其他文件的目录,并且必须将所有图像复制到该目录中。硬编码绝对文件路径可防止 RStudio knitr 复制图像文件。

我将图像文件复制到 "image" 子目录,并将我的 rmarkdown 代码更改为此,现在可以使用了:

![smiling_face](image/smile_small.png)