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

问题描述 投票:0回答:3

我希望将 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)
r svg pdf-generation r-markdown
3个回答
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)


6
投票

我找到了适合我的解决方案。它基于使用

svg
LaTeX 包和 Rmarkdown 文件中的一些 LaTeX 代码。

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

  1. svg
    包包含到 LaTeX 序言中。这可以使用 Rmarkdown 标头来完成。
  2. 确保在启用
    --shell-escape
    选项的情况下调用 LaTeX。这也可以使用 Rmarkdown 标头来完成。
  3. 在 Rmarkdown 文本中使用
    \includesvg{svg-image}
    包含 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}

希望对你有帮助!


0
投票
pdf_file <- tempfile(fileext = ".pdf")
rsvg::rsvg_pdf(svg_file, pdf_file)
knitr::include_graphics(pdf_file)

```{r fig2, fig.cap="desc"}
# Path to your SVG file
svg_file <- "Picture1.svg"

# Convert SVG to PNG (or PDF) for PDF output
pdf_file <- tempfile(fileext = ".pdf")
rsvg::rsvg_pdf(svg_file, pdf_file, )
knitr::include_graphics(pdf_file)
```
© www.soinside.com 2019 - 2024. All rights reserved.