首页 > 解决方案 > 不能在 Blogdown 的 Rmd 文件中使用 Markdown 短代码

问题描述

我正在使用博客。在我的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是因为无法在 Rmd 文件中使用简码语法

问题

但是 Markdown.content没有转换成 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"。这到底是怎么回事?

标签: rrstudior-markdownblogdownhugo-shortcode

解决方案


正如我在您引用的 Github 问题中提到的,Hugo 改变了{{% %}}. 个人感觉是破绽。在修复之前,我认为您唯一的选择是

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

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

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

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


推荐阅读