How can I insert an image from internet to the pdf file produced by R bookdown in a smart way?

左心房为你撑大大i 提交于 2019-12-06 07:34:05

问题


As far as I know, inserting an image from internet to LaTeX is not possible. You have to download the image first, and then include it locally.

With R bookdown, I do it like this:

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

knitr::include_graphics('cover.jpg')

It works very well for both the gitbook and pdf outputs. But I do not think it is smart. It is necessary for pdf to download the file first, but unnecessary for gitbook output. The image can be included directly to the gitbook output via:

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

Is there any way to switch them when I want both the pdf and gitbook outputs simultaneously? I mean, when I compile the .Rmd file, I would like to get a .pdf file with the image inserted, and a gitbook file with the original image inserted from the web address.


回答1:


You can check the current output format in knitr::opts_knit$get('rmarkdown.pandoc.to'). If it is 'html', you use the URL of the image, otherwise use the file path, e.g.

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)

Here knitr:::pandoc_to() is an internal wrapper function of knitr::opts_knit$get('rmarkdown.pandoc.to').



来源:https://stackoverflow.com/questions/46331896/how-can-i-insert-an-image-from-internet-to-the-pdf-file-produced-by-r-bookdown-i

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!