不能在 Blogdown 的 Rmd 文件中使用 Markdown 简码

Cannot use Markdown shortcodes in Blogdown's Rmd files

我正在使用 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",它仍然呈现完全相同的输出。这到底是怎么回事?

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

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

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

    如果您之前通过 Homebrew 安装了 Hugo,您最好将其卸载:brew remove hugo.

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