防止 Markdown 文件中包含的 HTML 被 Jekyll 进一步处理



我正在使用 Jekyll 并希望使用 {% include... %} 在 markdown 文件中包含一段 HTML,而无需进一步处理该 HTML,即由 markdown 处理器处理,就好像它只是内联 HMTL。

注意:我正在使用红地毯降价(而不是例如kramdown)。

这可以用杰基尔插件处理吗?

创建了一个 GitHub 存储库 md-include-html,其中包含以下文件来演示我的问题。

1. _layouts/default.html包含:

<div>
{{ content }}
</div>

2. md-page.md包含:

---
layout: default
---
A
{% include_relative html-snippet.html %}
B

3. html-snippet.html包含:

</div>
<!-- Some arbitrary HTML for {{ page.path }} -->
<div>

请注意,我首先尝试关闭将由 _layouts/default.html 引入的div,然后在最后打开一个新的div。

这导致_site/md-page.html

<div>
<p>A</p>
<p></div>
&lt;!-- Some arbitrary HTML for md-page.md --&gt;
<div></p>

查看我的评论是如何被处理的,我的内容是如何包装在<p>...</p>中的。

似乎包含发生在降价处理

之前,并且无法告诉降价处理器以不同的方式处理包含的文本。

所以我可以在 HTML 文件中包含 markdown 和这样的东西(请参阅我的存储库中的html-page.html):

{% capture snippet_content %}
{% include_relative md-snippet.md %}
{% endcapture %}
{{ snippet_content | markdownify }}

但是我不能在降价文件中包含 HTML。

如果没有降价功能(在 Liquid 中完成的任何事情基本上发生得太早)来暂时禁用降价处理,我看不到解决这个问题的方法。

例如

A
<markdown-off>{% include_relative html-snippet.html %}</markdown-off>
B

是的,我知道标签看起来不是很降价,但你明白我的意思。

有没有办法用杰基尔插件做到这一点?我查看了 Jekyll 文档的插件页面中提到的那些,但没有立即发现任何内容。

现在刚遇到这个问题。我正在使用包含在 Jekyll 的 .md 文件中添加 html 片段。如果您使用的是 Kramdown,则可以在包含代码段中添加 markdown 属性。

<div markdown="0"> !-- some html you don't want processed --> </div>

这似乎有效。

我知道

一个老问题,但是您是否尝试过将其包装在{% raw %} {% endraw %}中?

尝试

</div>
{% raw}
<!-- Some arbitrary HTML for {{ page.path }} -->
{% endraw %}
<div>

这应该会停止模板引擎的处理。

将注释缩进 4 个空格意味着 markdown 会将其视为代码,但 Liquid 仍将处理{{ page.path }}

相关内容

  • 没有找到相关文章

最新更新