Hexo 生成的初始博客是支持标签外挂和插入图片的,但是原生的 markdown 渲染器hexo-renderer-markdowed
对于复杂的公式支持并不友好,因此不得不卸载掉原生的 markdown 渲染方法,本着优化公式显示的原则进行新的渲染的寻找,最终找到的几种解决方案有:
hexo-renderer-kramed
,支持 mathjax,轻量,对 hexo 的标签外挂也能正常处理,近乎最优解,但是原生的渲染行内公式会有各种奇怪的问题,需要修改源代码中的行内公式匹配规则,csdn 上主流的公式渲染问题的解决办法,但是因为我的博客是用 githubpages 自动生成,因此在安装源包的时候生成网页的行内公式渲染问题无法得到解决。hexo-renderer-markdown-it
,据说支持 mathjax,但就我安装的体验来看貌似并不支持,另外已经不维护,因此不作为主流备选项。hexo-filter-mathjax
一个专门的 mathjax 渲染,需要再需要渲染的页面添加mathjax:true
,渲染效果不错,但是因为本身并不能作为 markdown 渲染器使用,可以作为一种备选方案。
几经周折已经打消了使用支持 mathjax 引擎的希望,转入 katex,第一个看到的插件就是markdown-it-katex
,不得不说速度是真的快,但是对于一些环境例如 equation,align 等均不支持,考虑到自己博客大量涉及这些环境,因此也并非一种很好的选择。
看到 katex 的局限之后,其实已经隐约希望有一种能够同时支持 mathjax 和 katex 的插件,这个时候第一时间想到的是hexo-filter-mathjax
+hexo-renderer-kramed
,但是这个存在的问题是 katex 渲染引擎无论如何不会关闭,换言之开启 mathjax 引擎后会出现两个公式的渲染结果,这个致命问题不敢继续使用。
想着 mathjax 和 katex 兼得的幻想,下一个可选项是
hexo-math
,这个插件是大部分会推荐的一个插件,同时支持 mathjax 和 katex 进行渲染,但是一个问题是公式书写时必须写成标签外挂的形式,因此只作为了一个备选项,并没有投入使用。
想来这些时日 hexo 博客部署遇到的很多问题都是由于 hexo 对于 markdown 的兼容性不是那么好所致,之前有过使用 jkelly 的体验,很容易就能发现 jkelly 是相对来说更围绕 markdown 的语法拓展展开的,hexo 的插件做的相对来说有一些些差,最后为了页面的加载速度,我决定使用 katex 进行加载,幸亏有 butterfly 主题的加持,一些 katex 渲染不出来的特殊环境也成功显示(主题配置中mathjax:true
),总的来说呈现一种比较理想的加载方式,但是 katex 的公式渲染始终不是长久之计,可能还存在诸多问题。目前博客得配置中安装的 markdown 渲染依赖是hexo-renderer-markdown-it-plus
,这是一个相对理想的 markdown 渲染方式,其他的渲染器好像会和 butterfly 的标签外挂存在冲突?借助markdown-it-katex
目前博客可以正常解析,逻辑大概是 katex 解析优先,mathjax 为辅的感觉。下一步公式的渲染策略是使用 mathjax 进行渲染,hexo-filter-mathjax
是一个很不错的选择,至于二者兼得的方式仍有待进一步探索,实在是懒得整了。
还有就是图片显示的问题最后也没能很好的解决,之前一直使用的。npm install https://github.com/7ym0n/hexo-asset-image —save
也是有一些奇怪的问题,最后逼不得已决定直接在 source 文件夹中创建一个图片的存储路径md_imgs
,这个问题的解决以后再议,目前已经解决了大部分问题