如何阻止Jekyll将---转为<hr />以兼容remark.js幻灯片?
我给你整理了几个实用的方案,能解决Jekyll把remark.js幻灯片的---转成<hr />的问题:
局部禁用Jekyll对幻灯片内容的处理
Jekyll本身支持用Liquid的{% raw %}和{% endraw %}标签来“保护”一段内容,让Jekyll跳过对这部分的预处理和Markdown转换。你可以把整个幻灯片的MD内容都套在这对标签里,这样里面的---就完全不会被Jekyll改动,完美适配remark.js的幻灯片分隔需求。示例如下:{% raw %} # 我的第一张幻灯片 --- # 我的第二张幻灯片 --- # 我的第三张幻灯片 {% endraw %}这个方法简单直接,适合你的幻灯片内容里不需要Jekyll处理动态内容(比如Liquid变量、模板片段)的场景。
转义幻灯片分隔符
---
如果你不想完全禁用Jekyll处理,比如幻灯片里还有需要Jekyll渲染的站点变量或组件,那可以给每个幻灯片分隔符的短横线加上反斜杠,写成\---。Jekyll的Markdown解析器会把\---渲染成普通的---,不会转成水平线,同时remark.js依然能识别这个分隔符来切换幻灯片。示例:# 我的第一张幻灯片 \--- # 我的第二张幻灯片 \--- # 我的第三张幻灯片这个方法灵活性高,只需要修改分隔符部分,不影响其他内容的Jekyll处理。
修改Jekyll全局配置,禁用水平线转换
如果你有多个remark.js幻灯片文件,不想逐个修改内容,可以通过调整Jekyll的全局配置来解决。
Jekyll默认用kramdown作为Markdown解析器,你可以在站点根目录的_config.yml里添加以下配置,直接禁用水平线的自动转换:kramdown: horizontal_rule: enable: false要是你切换到redcarpet解析器(需要确认站点支持),可以这样配置:
markdown: redcarpet redcarpet: extensions: ["no_horizontal_rule"]这个方法一劳永逸,但要注意:如果你的站点其他页面本来需要用
---来生成水平线,这个配置会影响那些页面的渲染,所以要根据实际情况选择。
内容的提问来源于stack exchange,提问作者tcs




