使用rmarkdown
准备报告时:http://rmarkdown.rstudio.com/可能希望文档根据文档类型进行不同的呈现。例如,如果正在呈现的文档是一个html文件,我可能想要嵌入一个YouTube视频,就好像它的pdf或MS Word我想要的是超链接的URL。
有没有办法告诉rmarkdown
这样的事情:
if (html) {
<iframe width="640" height="390" src="https://www.youtube.com/embed/FnblmZdTbYs? feature=player_detailpage" frameborder="0" allowfullscreen></iframe>
} else {
https://www.youtube.com/watch?v=ekBJgsfKnlw
}
码
devtools::install_github("rstudio/rmarkdown")
library(rmarkdown)
render("foo.Rmd", "all")
foo.Rmd
---
title: "For Fun"
date: "`r format(Sys.time(), '%d %B, %Y')`"
output:
html_document:
toc: true
theme: journal
number_sections: true
pdf_document:
toc: true
number_sections: true
word_document:
fig_width: 5
fig_height: 5
fig_caption: true
---
## Good times
<iframe width="640" height="390" src="https://www.youtube.com/embed/FnblmZdTbYs?feature=player_detailpage" frameborder="0" allowfullscreen></iframe>
答案 0 :(得分:6)
如in an answer to a related question,knitr
1.18 introduced所述,以下功能
knitr::is_html_output()
knitr::is_latex_output()
顾名思义,is_html_output()
检查输出是否为HTML。您可以在foo.Rmd
中添加以下内容:
```{r results='asis'}
if (knitr::is_html_output()) {
cat('<iframe width="640" height="390" src="https://www.youtube.com/embed/FnblmZdTbYs? feature=player_detailpage" frameborder="0" allowfullscreen></iframe>')
} else {
cat("https://www.youtube.com/watch?v=ekBJgsfKnlw")
}
```
答案 1 :(得分:5)
是的,您可以通过knitr::opts_knit$get("rmarkdown.pandoc.to")
访问输出格式。这将返回具有目标输出格式的字符串。这是一个例子:
---
title: "Untitled"
output: html_document
---
```{r}
library(knitr)
opts_knit$get("rmarkdown.pandoc.to")
```
这会返回&#34; html&#34;对于html_document,&#34; docx&#34;对于word_document和&#34; latex&#34;对于pdf_document。所以要回答你的问题,你可以这样做:
html <- knitr::opts_knit$get("rmarkdown.pandoc.to") == "html"