Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用bookdown(包括SVG图像)制作PDF_Svg_Latex_Bookdown - Fatal编程技术网

如何使用bookdown(包括SVG图像)制作PDF

如何使用bookdown(包括SVG图像)制作PDF,svg,latex,bookdown,Svg,Latex,Bookdown,我有一些R标记,包括以下代码: ```{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生

我有一些R标记,包括以下代码:

```{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错误:未知的图形扩展名:.svg。

这是可以理解的,因为knitr使用Latex的
\includegraphics{images/Huff-2009-fig5.1.svg}
来包含图像。所以,它本身不是一个bug


有没有更好的方法来包含SVG图像,这样我就不需要将其预处理为PDF或PNG?

您可以创建一个帮助函数来将SVG转换为PDF。例如,如果安装了系统包
rsvg convert
,则可以使用此功能包括SVG图形:

include_svg=函数(路径){
if(knitr::is_latex_output()){
output=xfun::with_ext(路径'pdf')
#如果需要,您可以将pdf的时间戳与svg进行比较,以避免转换
system2('rsvg-convert',c('-f',pdf','-a','-o',shQuote(c(输出,路径)))
}否则{
输出=路径
}
knitr::包含图形(输出)
}

您还可以考虑像 Migke/Stult>(基于IMAGE)的R包,将SVG转换成PDF。

避免每次转换文件,我把R代码> RSVG转换<代码>从R代码中转换成<代码> AudioMeX <代码>,然后在RMARKDOWN中通过<代码> BASH 块调用。code>Make仅当自上次生成
pdf
以来,svg发生了更改时才会重新生成,因此这是一种加快执行时间的好方法。