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

Is it possible to include svg image in pdf document rendered by rmarkdown?

我希望将 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)

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

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

  1. svg 包包含到 LaTeX 序言中。这可以使用 Rmarkdown header.
  2. 来完成
  3. 确保在启用 --shell-escape 选项的情况下调用 LaTeX。这也可以使用 Rmarkdown header.
  4. 来完成
  5. 使用 \includesvg{svg-image} 在 Rmarkdown 文本中包含您的 SVG 图片。请注意,不要包含文件扩展名

确保使用 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}

希望对您有所帮助!

现在我们可以简单地使用 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)