我有一些R markdown,其中包含以下代码:
```{r huff51, fig.show='hold', fig.cap='Design decisions connecting research purpose and outcomes [@huff_2009_designingresearchpublication p. 86].', echo=FALSE}
knitr::include_graphics('images/Huff-2009-fig5.1.svg')
```
使用bookdown生成HTML输出时,一切都按预期工作。
使用bookdown生成PDF输出时,出现错误! LaTeX Error: Unknown graphics extension: .svg.
这是可以理解的,因为knitr使用Latex的\includegraphics{images/Huff-2009-fig5.1.svg}
来包含图像。所以,这本身并不是一个错误。
是否有更好的方法来包含SVG图像,因此我不需要将其预处理为PDF或PNG?
答案 0 :(得分:0)
您可以创建一个辅助函数,将SVG转换为PDF。例如,如果您安装了系统软件包rsvg-convert
,则可以使用此功能包括SVG图形:
include_svg = function(path) {
if (knitr::is_latex_output()) {
output = xfun::with_ext(path, 'pdf')
# you can compare the timestamp of pdf against svg to avoid conversion if necessary
system2('rsvg-convert', c('-f', 'pdf', '-a', '-o', shQuote(c(output, path))))
} else {
output = path
}
knitr::include_graphics(output)
}
您还可以考虑使用 magick (基于ImageMagick)之类的R包将SVG转换为PDF。