无法在Blogdown的Rmd文件中使用Markdown简码

时间:2019-04-25 20:09:40

标签: r rstudio r-markdown blogdown

我正在使用Blogdown。在我的post.Rmd文件中,我需要使用一个简码:

This is me calling a **shortcode**:

`r blogdown::shortcode("mysc", .content = "Find **more** about this shortcode in [here](https://www.wikipedia.com).")`

如您所见,.content是Markdown,不是纯文本。简码mysc.html为:

<p class="sc">
  {{ if .Inner }}
    {{ .Inner }}
  {{ end }}
</p>

如您所见,我使用blogdown::shortcode是因为it is not possible to use shortcode syntax in Rmd files

问题

但是.content中的Markdown并未转换为HTML,我将其作为输出得到:

<p>
Find **more** about this shortcode in [here](https://www.wikipedia.com).
</p>

我在做什么错了?


问题排查

请注意,指定.type无济于事:

`r blogdown::shortcode("mysc", .content = "...", .type = "markdown")`

也不必要,因为它默认为"markdown"。如果我指定.type = "html",它仍然呈现相同的精确输出。到底是怎么回事?

1 个答案:

答案 0 :(得分:1)

正如您在the Github issue中提到的那样,Hugo更改了{{% %}}的行为。我个人认为这是一个破损。在修复之前,我认为您唯一的选择是

  • 将您的网站项目锁定到较低版本的Hugo,例如

    blogdown::install_hugo('0.54.0', force = TRUE)
    

    如果您以前是通过Homebrew安装的Hugo,最好将其卸载:brew remove hugo

  • 或手动将.Inner转换为{{ .Inner | markdownify }}。请注意,这种方法有潜在的风险:如果Hugo作者决定恢复{{% %}}短代码的行为,则必须删除markdownify