【Hexo】使用hexo-markdown-it实现渲染markdown脚注能力
本文介绍了如何配置hexo-markdown-it,让hexo站点支持脚注。
1. 说明
如果你看过本文先前更新的一系列SLAM相关博客,就会发现,在【SLAM】使用evo工具来绘制ORB_SLAM2轨迹图,评估ATE\RPE指标一文中,出现了脚注的能力。
hexo在默认情况下是不支持渲染markdown脚注的,而慕雪编写博客使用的obsidian原生支持脚注。所以,我们只需要修改hexo的配置,让它也能渲染出脚注的样式,就ok了。
脚注的markdown格式如下,脚注实际内容的可以随意放置,markdown渲染器会在渲染的时候将其自动移动到文末显示。我们可以把脚注的内容直接写在脚注附近,后续编辑的时候就不需要跳到文末去看内容了,很方便。
1 | 这是一个脚注[^1] |
比如:示例脚注文字[1]
2. 配置
要想实现脚注能力,需要使用github.com/hexojs/hexo-renderer-markdown-it插件,替换掉hexo原生的md渲染器。
1 | npm uninstall hexo-renderer-marked --save # 卸载原有渲染器 |
更换了渲染器之后,把下面这一段放到hexo配置文件_config.yml
的最后就可以了。
1 | # https://github.com/hexojs/hexo-renderer-markdown-it |
其中脚注功能是插件能力的的一部分,需要添加plugins markdown-it-footnote来启用。更多插件的作用可以查看上面贴出来的博客,这里就不多记录了。目测其他的插件用不上,可以在mdit-plugins.github.io/zh/里面找其他插件。
需要注意的是,markdown-it-task-lists需要额外安装插件,否则hexo g
的时候会报错
1 | npm install markdown-it-task-lists |
如上配置之后,可以在本地hexo s测试一下,慕雪实测和butterfly主题完全兼容,不需要修改其他任何配置。
3. 额外添加脚注提示文字
默认情况下,hexo-renderer-markdown-it提供的脚注,是没有任何提示文字,直接显示在文末的(会和正文有一条分割线)。这对不太了解脚注的读者来说可能会产生误导。
所以,我让ai编写了一个js脚本,可以在脚注之前注入一个“脚注:”提示文字,这样就能让脚注明显和其他内容区分开来了。你可以把这个js放到butterfly主题的footter或者header配置里面,就会生效。其他主题使用的方式类似,只要能给主题注入这个js即可。
注意js脚本里面会先判断路径中带有/posts
,也就是本站的文章页面才会启动,否则不会生效。
1 | # 脚注检测并显示一个加粗文字 |
最终效果如图所示,红框圈出来的部分就是新增的“脚注:”提示文字。
4. 插件和butterfly主题存在的冲突
这里要提醒一下butterfly主题的用户,hexo-markdown-it和butterfly主题的自定义高亮块是冲突的,比如下面这种
这是一个自定义信息展示框[^2]
可以看到,在本站butterfly的博客站点上,这个自定义信息框里面的2号脚注没有被正常渲染,显示出了markdown原本的语法,不符合预期。这个是hexo-markdown-it和butterfly主题的冲突问题,目测无解。只能规避这种用法了。
这是一个脚注内容 ↩︎