有没有办法在R Markdown中自动为图像添加标识符?

Mik*_*laj 4 r knitr r-markdown

由于我正在尝试实现其他一些javascript,我希望能够在编译的RMarkdown文件中轻松区分和定位图像.使用这种代码块以标准方式生成的图像

```{r}
plot1 <- ggplot(data = mtcars, aes(x = wt, y = mpg, group = am, color = am)) +
    geom_point(size = 3)

plot1
``` 
Run Code Online (Sandbox Code Playgroud)

结果像HTML一样

<img src = "data:image/png..." width = 1000/>
Run Code Online (Sandbox Code Playgroud)

我希望能够自动为每个图像添加唯一标识符,以便每个这样的调用都会产生类似的结果

<img src = "data:image/png..." id = "plot1" width = 1000/>
Run Code Online (Sandbox Code Playgroud)

我可以用JS写这个,但我想知道是否有办法用一些RMarkdown选项来做到这一点.

Mar*_*zer 5

您可以像这样创建一个块选项钩子:

knitr::opts_hooks$set(out.extra = function(options) {
  options$out.extra <- paste0(ifelse(!is.logical(options$out.extra), options$out.extra, "")," id='", options$label, "'")
  options
})
Run Code Online (Sandbox Code Playgroud)

现在,如果out.extraT逻辑或非逻辑,将添加等于块标签的id.如果它不是逻辑而是类型字符,它的值将在id属性之前插入.考虑以下示例,我们在图中添加边框.id也设置好了!

完整示例:

---
title: "Out.Extra"
author: "Martin Schmelzer"
date: "10/9/2017"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)

knitr::opts_hooks$set(out.extra = function(options) {
  options$out.extra <- paste0(ifelse(!is.logical(options$out.extra), options$out.extra, "")," id='", options$label, "'")
  options
})
```

## Slide with Plot

```{r pressure, out.extra = 'style="border: red 3px solid;"'}
plot(pressure)
```
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

或者,看看包kfigr.