我正在与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>
<!-- Some arbitrary HTML for md-page.md -->
<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中提到的那些,但没有立即发现任何内容。
答案 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>
这似乎可行。