如何以智能方式将图像从互联网插入到R bookdown生成的pdf文件中?

时间:2017-09-20 21:15:50

标签: r pdf latex knitr bookdown

据我所知,无法将图像从互联网插入LaTeX。您必须先下载图像,然后将其包含在本地。

使用R bookdown,我这样做:

download.file('https://bookdown.org/yihui/bookdown/images/cover.jpg','cover.jpg', mode = 'wb')

knitr::include_graphics('cover.jpg')

它对gitbook和pdf输出都很有效。但我不认为这很聪明。 pdf首先需要下载文件,但gitbook输出不需要。图像可以通过以下方式直接包含在gitbook输出中:

knitr::include_graphics('https://bookdown.org/yihui/bookdown/images/cover.jpg')

当我同时想要pdf和gitbook输出时,有没有办法切换它们?我的意思是,当我编译.Rmd文件时,我想获得插入图像的.pdf文件,以及从网址插入原始图像的gitbook文件。

1 个答案:

答案 0 :(得分:2)

您可以在knitr::opts_knit$get('rmarkdown.pandoc.to')中查看当前的输出格式。如果是'html',则使用图像的URL,否则使用文件路径,例如

cover_url = 'https://bookdown.org/yihui/bookdown/images/cover.jpg'
if (!file.exists(cover_file <- 'cover.jpg'))
  download.file(cover_url, cover_file, mode = 'wb')
knitr::include_graphics(if (identical(knitr:::pandoc_to(), 'html')) cover_url else cover_file)

此处knitr:::pandoc_to()knitr::opts_knit$get('rmarkdown.pandoc.to')的内部包装函数。