.Rmarkdown 到 .markdown:使用 {{< figure >}} 简码代替 <img> HTML

.Rmarkdown to .markdown: Use {{< figure >}} shortcode instead of <img> HTML

我一直在考虑为我现有的 Hugo 博客使用 blogdown,我认为我已经将其缩小到一个缺点。我正在使用 .Rmarkdown 文件扩展名,因为我想使用 Blackfriday markdown 处理器来利用 Hugo 功能。

其中包括我添加到我的主题中的自定义项,它采用嵌入了内置短代码的任何图像,使用 PhotoSwipe 使它们在单击时显示在灯箱中。我已经做到了,所以任何使用 {{< figure >}} 简码的东西都可以做到这一点。

是否可以通过 blogdown 或 knitr(假设 knitr 是呈现 Rmarkdown 的过程的一部分)来自定义绘图的输出,以便将它们包装在简码而不是 HTML 标签中?我认为如果我至少可以在 Markdown ![](/path/to/img.jpg) 中格式化图表,甚至可以用 Go/Blackfriday 来做到这一点,如果那样会更容易的话。

有两种方法:要么重新定义the plot hook of knitr(需要更多关于knitr的知识),要么使用以下技巧:

```{r cars-plot, fig.show='hide'}
plot(cars)
```

{{< figure src="`r knitr::fig_chunk('cars-plot', 'png')`" >}}

在上面的示例中,绘图已生成但隐藏在块输出中(fig.show='hide';如果要隐藏整个代码块,请使用 include=FALSE)。然后通过函数 knitr::fig_chunk() 检索其路径并将其插入 figure 短代码中。