Невозможно использовать короткие коды Markdown в Rmd-файлах 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 это уценка, а не простой текст. Короткий номер mysc.html является:

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

Как видите, я использую blogdown::shortcode потому что невозможно использовать синтаксис шорткода в файлах Rmd.

проблема

Однако уценка в .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", Что, черт возьми, здесь происходит?

1 ответ

Как я уже упоминал в проблеме Github, на которую вы ссылались, Хьюго изменил поведение{{% %}}. Лично я считаю, что это поломка. Прежде чем это будет исправлено, я думаю, что ваши единственные варианты:

  • Заблокируйте свой проект веб-сайта на более раннюю версию Hugo, например

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

    Если вы ранее устанавливали Hugo через Homebrew, вам лучше удалить его: brew remove hugo.

  • Или вручную повернуть .Inner на Markdown в вашем шорткоде: {{ .Inner | markdownify }}. Обратите внимание, что у этого подхода есть потенциальный риск: если автор Hugo решит изменить поведение{{% %}} шорткоды, вам нужно будет удалить markdownify.

Другие вопросы по тегам