记录一下callout支持过程。
¶初期想法
因为hexo支持markdown基础语法,而笔者在使用hexo之前,恰好使用过Obsidian笔记软件,非常喜欢使用Obsidian中的Callout块。
但发现网上并没有相关解决方案,虽然可以使用自定义代码块的方式书写类似callout块的效果,但是这样就和当前使用的markdown编辑器不兼容,而且自定义代码块的样式并不好看。笔者还是比较喜欢即写即渲染的编辑模式
所以,笔者就想提供一个专门用于渲染callout块的自定义渲染器,笔者曾经写过一个python的md渲染器,就在书写本文章不久前,也是为了解决callout块问题
笔者对callout还是非常喜爱的
¶实际实现
首先,安装hexo-renderer-markdown-it 以及 markdown-it-container 插件来扩展 Markdown 功能:
1 | npm install hexo-renderer-markdown-it --save |
在 hexo-renderer-markdown-it 配置中启用容器解析: 修改 Hexo 的 _config.yml 文件:
1 | markdown: |
此时,hexo已经支持运行自定义的markdown了。
接下来,我们书写callout渲染器。
其实笔者在该部分废了老大的劲
我先贴下代码
¶自定义渲染器代码
二编了🤡代码最终还是没躲过bug,当然鲁棒性肯定更高了
三编了,这次是加了支持表情符的功能,这个也是typora支持的😴
1 | const iconConfig = { |
其实在阅读这段代码我们能够发现,这段脚本支持用户自定义自己喜欢的callout块,这是后话
二编:发现有hexo有时候会报breaks和xhtmlOut的错,最后看了一下详细的报错信息发现和这个callout脱不了干系,果不其然要改了😰
¶代码放置位置
然后就是代码的放置位置,虽然笔者并不了解hexo
-
总之,在你的博客根目录
(虽然不知道博客根目录是否难懂,但如果跟着教程配好了博客的人一定都很聪明) -
新建一个
scripts文件夹当然,也可能有的大佬已经有了,萌新瑟瑟发抖 -
然后在该文件夹下新建文件
markdown-it-callout.js当然,笔者的文件名取的是这个,但并不清楚其他名字是否可用 -
然后把上面那段
callout渲染代码贴进去
¶自定义css样式
然后由于笔者使用的callout块是自己渲染的,需要自定义css样式
这个部分在客制化css有详细介绍
¶支持表情符部分
¶安装 markdown-it-emoji 插件
使用 npm 安装 markdown-it-emoji:
1 | npm install markdown-it-emoji |
当然,如果不喜欢表情符的话,可以把.use(require('markdown-it-emoji')删除。
然后!然后!然后!你就获得了一个可以渲染callout的hexo
¶然后就是效果展示了
其实看写在前面就可以了