[hexojs/hexo]【】hexo这么好的博客系统,不能用一个配得上的markdown渲染引擎

2023-12-21 69 views
2

如题

hexo用了一年多了,挺无聊的,就一个不尽如人意的地方:markdown引擎真的不是甚好用。

macdown里面写好文章,换到hexo渲染一下,就各种凌乱

  1. mathjax的支持:我搜到了issue里面有各种解决方案,但都不完美;也有说是markdownmathjax语法冲突本身的问题导致的,但是macdown里面就没有这种问题啊。

  2. 行内code的样式:换用了最新版本的hexo之后,发现行内代码的字体大小被统一调小,而不会再随着标题样式变化,相当于说现在标题中无法出现行内代码,否则以为比正文内容还小。

回答

8

我用的是NexT风格套件,最近因为要处理数学公式,也遇到了这样的问题。在解决问题和配置的过程中查看了下NexT的模板配置文件中的注释,才发现原来Hexo有多个markdown的渲染引擎,光是官方在插件页面中发布的不下三四。

目前来说,使用渲染数学公式的,大体有两个代码,一个是MathJax,另一个是Katex。在采用这两个代码的时候,我注意到使用Marked、Markdown-it、Markdown-it-Plus 、Kramer等跑的效果不太一样,不仅仅是对数学公式的练习上的反应,还包括类如就是[^1]注释出来、行内加粗、代码片段那个反勾号标记是否最后能有空格等问题上。用Katex的话,某些Markdown的渲染引擎还必须支持到特定的Katex版本。

总之,要能成功的渲染出非普通文本格式的html文件,并不是一件特别轻松的事。当然,Hexo与Hugo不同,晚上干脆是独立的且有专门运行的Go程序在处理,提前封包基本上不用考虑什么依赖包的需要,当然也不需要进行Markdown引擎的选择了,一切都由官方指定。

StaticGen的对比来看,Hexo已经从最初的老二掉了,变成了老四。也许官方在提供丰富的插件的同时,也可以在指定固定或官荐插件方面为用户提供更多的信息,也就是说,官定内置的 Markdown 渲染引擎是 hexo-renderer-marked,但在哪些情况下,我们推荐使用 hexo-renderer-markdown-it?哪些情况下,由于各个开发者无法及时维护,所以目前推荐大家在使用什么功能方面,我们推荐大家使用hexo-renderer-kramer,类似这样的?

4

有一篇关于如何在 Hexo NexT 中使用数学方程的好文档。如果您还没有检查过,您应该检查一下它是否满足您的需求。

2

试一下Katex。本质上是直接翻译成css,加载速度也更快,无需重刷,自定义样式也更方便。缺点是语法更规范严格,不过瑕不掩瑜吧。

2

@BentleyBlanks,katex 支持方程编号吗?

3

由于缺乏近期活动,此问题已自动标记为过时。如果没有进一步的活动发生,它将被关闭。感谢你的贡献。

8

@jdhao hexo 生成失败后我做了如下操作:

首先,您需要卸载原来的渲染器hexo-renderer-marked,并安装上面的渲染器之一:

npm un hexo-renderer-marked --save
npm i hexo-renderer-pandoc --save # or hexo-renderer-kramed

其次,在 next/_config.yml 中,打开数学启用并选择 mathjax 作为引擎。

math:
  enable: true
  ...
  engine: mathjax
  #engine: katex

最后,运行标准 Hexo 生成、部署进程或启动服务器:

hexo clean && hexo g -d
# or hexo clean && hexo s
7

@SnailDove 对我帮助很大!谢谢。

6

大家好,我正在重写hexo-math atm(https://github.com/hexojs/hexo-math/pull/130)。它现在作为标签插件实现。

---
title: test mathjax
date: 2020-01-02 01:02:03
---

{% mathjax %}
\frac{1}{x^2-1}
{% endmathjax %}

使用标签插件的优点是它的内容与 Markdown 内容的其余部分分开,因此它们不应相互冲突。

PR 已准备好进行测试,只需通过 进行安装即可$ npm install hexo-math@curbengh/hexo-math#overhaul。如果没有问题的话,我计划这个周末发布。临时使用指南在这里(readme.md)。