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

rda*_*tor 6 svg pdf-generation r 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)
Run Code Online (Sandbox Code Playgroud)

Pen*_* Yu 8

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

Run Code Online (Sandbox Code Playgroud)


小智 6

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

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

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

确保使用pdflatexLaTeX 引擎。其他引擎可能也可以工作,但它们需要不同的选项......

以下是在我的机器上运行的示例,svg-image.svg在工作目录中调用了一个 SVG 图像。

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

\includesvg{svg-image}
Run Code Online (Sandbox Code Playgroud)

我希望它有帮助!