html - 有条件地将视频嵌入 R-markdown (bookdown)

标签 html video conditional-statements output bookdown

如果我只是将 YouTube 提供的 HTML 代码复制并粘贴到 .Rmd 文件中,这对于 gitbook 输出来说效果很好。这是代码示例

<iframe width="560" height="315" src="https://www.youtube.com/embed/9AI3BkKQhn0"
frameborder="0" allow="accelerometer; autoplay; encrypted-media;
gyroscope; picture-in-picture" allowfullscreen>
</iframe>

但是,我收到 PDF 和 EPUB 输出的错误消息。为了避免这种情况,我想我可以使用条件编译,例如

```{r}
if (knitr::is_html_output(excludes = "epub")) {
  <iframe width="560" height="315" 
  src="https://www.youtube.com/embed/9AI3BkKQhn0"
  frameborder="0" allow="accelerometer; autoplay; encrypted-media;
  gyroscope; picture-in-picture" allowfullscreen>
  </iframe>
}
```

但是,这已在 RStudio 编辑器中因意外标记而被划掉。这里有什么问题吗?有办法解决这个问题吗?

最佳答案

欢迎来到 stackoverflow!

  • 你说得对,条件编译就是解决这个问题的一种方法。为此,我们需要告诉 knitr 是否应该评估代码块(以输出格式为条件)。这必须通过 block 选项eval指定,而不是在代码块内。

  • 请注意,R 无法解析纯 HTML 代码。相反,您可以将 HTML 代码作为字符串传递给 cat() (打印字符串),并告诉 knitr 使用 block 选项 results = 'asis' 包含结果.

```{r, eval=knitr::is_html_output(excludes = "epub"), results = 'asis', echo = F}
cat(
'<iframe width="560" height="315" 
  src="https://www.youtube.com/embed/9AI3BkKQhn0"
  frameborder="0" allow="accelerometer; autoplay; encrypted-media;
  gyroscope; picture-in-picture" allowfullscreen>
  </iframe>'
)
```

请注意,我还设置了 echo = F,以便代码不会打印在输出中。

有关针织选项的更多信息,请参阅 Yihui 的精彩 documentation .

关于html - 有条件地将视频嵌入 R-markdown (bookdown),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63354509/

相关文章:

javascript - knockout 选项条件 css

php - 显示登录 JS 弹出窗口以进行身份​​验证所需的操作

javascript - Puppeteer:无法点击输入[type=radio]

ios - 如何在运行 session 期间更改 AVCaptureMovieFileOutput 视频方向?

c++ - 是否有一个 API 可以在 iOS 上运行以更改现有视频的每秒帧数?

java - 为什么要使用条件,“阻塞”和“等待”之间有什么区别

javascript - 更短的代码而不是对所有组合使用 IF

windows - Windows 上的源代码

javascript - jQuery `.click` 条件不响应 `else`

if-statement - SICP lisp 'if' 条件表达式解释