是否可以在rmarkdown呈现的pdf文档中包含svg图像?

时间:2015-12-03 11:03:20

标签: r svg pdf-generation r-markdown

我希望将svg图像嵌入到我使用rmarkdown渲染的pdf文档中。这似乎不可能,或者我错过了什么?如果不可能在嵌入之前首先将.svg图像转换为.png?

在我的rmarkdown文件中,它看起来像这样(注意两种不同的插入图像):

```{r results="asis",eval=TRUE,echo=FALSE,message=FALSE, error=FALSE, warning=FALSE, comment = NA,fig.height=10}

cat("![](svg_file.svg)")

```

![](svg_file.svg)

2 个答案:

答案 0 :(得分:1)

我找到了一个适合我的解决方案。它基于在您的Rmarkdown文件中使用svg LaTeX包和一些LaTeX代码。

这可以通过以下主要步骤来实现:

  1. svg包添加到LaTeX前导码中。这可以使用Rmarkdown标头完成。
  2. 确保在启用--shell-escape选项的情况下调用LaTeX。这也可以使用Rmarkdown标头完成。
  3. 在您的Rmarkdown文本中使用\includesvg{svg-image}添加SVG图像。请注意,不要包含文件扩展名
  4. 确保使用pdflatex作为LaTeX引擎。其他引擎可能也会起作用,但它们需要不同的选项......

    以下是在我的机器中工作的示例,在工作目录中有一个名为svg-image.svg的SVG图像。

    ---
    output: 
      pdf_document:
        latex_engine: pdflatex
        pandoc_args: "--latex-engine-opt=--shell-escape"
    header-includes:
       - \usepackage{svg}
    ---
    
    \includesvg{svg-image}
    

    我希望它有所帮助!

答案 1 :(得分:1)

现在,我们可以简单地使用Cowplot库读取图像并将其绘制在R markdown中。

```{r figSvg,eval=TRUE,echo=FALSE,message=FALSE, error=FALSE, warning=FALSE,fig.height=10}

library(cowplot)
fig_svg<-cowplot::ggdraw()+cowplot::draw_image("http://jeroen.github.io/images/tiger.svg")
plot(fig_svg)