代码之家  ›  专栏  ›  技术社区  ›  Gabriele B

如何创建一个定制的Knitr钩子来替换chunk输出(而不是添加before/after?)

  •  0
  • Gabriele B  · 技术社区  · 6 年前

    {% 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" %}
    

    这里有两个问题:

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

    0 回复  |  直到 6 年前