博客的公式渲染问题

2022-09-06 14:41:54 浏览数 (1)

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,这个问题的解决以后再议,目前已经解决了大部分问题

0 人点赞