【发布时间】:2015-04-01 15:59:55
【问题描述】:
我正在使用 Jekyll,并希望使用 {% include... %} 在 Markdown 文件中包含 HTML 的 sn-p,而无需进一步处理该 HTML,即,然后由 Markdown 处理器处理,就好像它只是内联 HMTL .
注意:我使用的是 redcarpet 降价(而不是例如 kramdown)。
这可以用 Jekyll 插件处理吗?
我创建了一个 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>
<!-- Some arbitrary HTML for md-page.md -->
<div></p>
查看我的评论是如何被处理的,以及我的内容是如何包装在<p>...</p> 中的。
似乎包含发生在降价处理之前,并且没有办法告诉降价处理器以不同的方式处理包含的文本。
所以我可以在 HTML 文件中包含类似这样的标记(请参阅我的仓库中的 html-page.html):
{% capture snippet_content %}
{% include_relative md-snippet.md %}
{% endcapture %}
{{ snippet_content | markdownify }}
但我不能在 markdown 文件中包含 HTML。
如果没有降价功能(在 Liquid 中完成的任何事情基本上都发生得太早)暂时禁用降价处理,我无法解决这个问题。
例如
A
<markdown-off>{% include_relative html-snippet.html %}</markdown-off>
B
是的,我知道标签看起来不太像降价,但你明白我的意思。
有没有办法用 Jekyll 插件来做到这一点?我查看了 Jekyll 文档的 plugin page 中提到的那些,但没有立即发现任何东西。
【问题讨论】:
-
当我最初发布这个问题时,我没有在演示这个问题的 repo 中的
_config.yml文件中指定markdown: redcarpet。我现在有了 - 因为这是我在实际项目中使用的降价类型。