如何创建一个自定义的Knitr钩子来替换块输出(而不是在之前/之后添加?)

时间:2018-08-02 22:05:24

标签: knitr

我有一个基于Blogdown的Jekyll网站,并使用从.Rmd到.md的knitr。我的Jekyll主题有一个辅助液体标签,用于添加图形和标题。这是签名:

{% include figure image_path="file.svg" alt="Lorem ipsum" caption="Dolor sic" %}

因此,我想更改plot的默认输出以自动具有该语法。

我已经设置了此钩子:

knitr::knit_hooks$set(figure = function(before, options, envir) {
    if (!before) {
      ## after a chunk has been evaluated
      name <- paste(options$fig.path, options$label, sep = '')
      message(name)
      return(sprintf("{%% include figure image_path=\"%s\" alt=\"%s\" caption=\"%s\" %%}", name, options$fig.alt, options$fig.cap))

    }
  })

但这是我进入.md文件的输出:

![A scatterplot of the cars data](assets/figures/cars-1.svg){% include figure image_path="assets/figures/cars" alt="Test" caption="A scatterplot of the cars data" %}

这里有两个问题:

  • 我的自定义输出已添加到用于绘图的默认md输出中,但应该代替它(当然,该文件必须在磁盘上生成)

  • 文件名。当然,“标签”不起作用,但是如何获取块的第一个图的文件名(当然,我知道它不适用于多个图,但我将避免使用它)

0 个答案:

没有答案