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

pzh*_*hao 6 pdf latex r knitr bookdown

据我所知,将图像从互联网插入到 LaTeX 是不可能的。您必须先下载图像,然后将其包含在本地。

使用 R bookdown,我这样做:

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

knitr::include_graphics('cover.jpg')
Run Code Online (Sandbox Code Playgroud)

它适用于 gitbook 和 pdf 输出。但我不认为它是聪明的。pdf需要先下载文件,gitbook输出不需要。图像可以通过以下方式直接包含在 gitbook 输出中:

knitr::include_graphics('https://bookdown.org/yihui/bookdown/images/cover.jpg')
Run Code Online (Sandbox Code Playgroud)

当我同时想要 pdf 和 gitbook 输出时,有什么方法可以切换它们吗?我的意思是,当我编译 .Rmd 文件时,我想得到一个插入图像的 .pdf 文件,以及一个从网址插入原始图像的 gitbook 文件。

Yih*_*Xie 7

您可以在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)
Run Code Online (Sandbox Code Playgroud)

knitr:::pandoc_to()knitr::opts_knit$get('rmarkdown.pandoc.to').