防止Jekyll进一步处理的markdown文件中包含的HTML?

时间:2015-02-02 16:30:58

标签: markdown jekyll redcarpet

我正在与Jekyll合作,并希望使用{% include... %}在markdown文件中包含一小段HTML,而不会进一步处理该HTML,即由降价处理器处理,就好像它只是一样内联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>
&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中完成的任何操作实际上过早发生)暂时禁用降价处理。

E.g。

A

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

B

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

使用Jekyll插件会有一些方法吗?我查看了Jekyll文档plugin page中提到的那些,但没有立即发现任何内容。

2 个答案:

答案 0 :(得分:0)

我知道一个老问题,但您是否尝试将其包裹在{% raw %} {% endraw %}中?

尝试

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

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

将评论缩进4个空格意味着降价会将其视为代码,但Liquid仍会处理{{ page.path }}

答案 1 :(得分:0)

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

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

这似乎可行。