Jekyll搭配remark使用时{% include %}引入指令无法生效问题咨询
问题原因
你遇到的问题本质是remark执行阶段不会解析Jekyll的Liquid标签,而你的项目布局配置没有让Jekyll在传递内容给remark之前先执行Liquid渲染逻辑,因此{% include %}指令会被原样输出。
绝大多数按照通用教程搭建的remark+Jekyll项目,为了避免remark特殊语法和Liquid标签冲突,都会在布局文件中使用{% raw %}标签包裹传递给remark的页面内容,这会直接阻断所有Liquid指令的执行,就是你遇到问题的核心诱因。
解决步骤
- 打开
_layouts/presentation.html布局文件,找到传递给remark.create()的source参数配置部分 - 将原有直接引用
page.content的逻辑,替换为以下代码,先捕获执行完Liquid指令后的内容再传递给remark:
var slideshow = remark.create({ // 其他原有配置保留 source: `{% capture rendered_slides %}{{ page.content }}{% endcapture %}{{ rendered_slides | escape | replace: '\n', '\\n' }}` })
- 检查布局文件和幻灯片markdown文件,删除所有包裹内容的
{% raw %}、{% endraw %}标签,避免Liquid解析被阻断 - 重新运行
jekyll serve即可看到include指令已经被正常执行,对应文件内容被成功引入到幻灯片中。
内容的提问来源于stack exchange,提问作者Ratnanil
相关产品推荐
相关产品推荐

