当你搜索到并点开这篇博文的时候,你的公式渲染很可能也遇到问题了。当初我之所以选择Next主题,就是因为他支持MathJax,可以渲染公式。但是最近,我在浏览之前的博文的时候,突然发现有些数学符号没有被渲染出来。这些符号之前都是被正确渲染的:
但现在他们却都变成了这个样子:
不知道它们是从什么时候开始变成这样的,按理说之前它们好好的,突然变成这样,那应该是我对一些依赖包做了改动。
在此我将解决问题的过程做一个记录,很可能你出现的问题和我不太一样,但是我解决问题的过程和文中给出的几个链接可能对你很有帮助。
事实上,我的确在最近执行过
1 | npm update |
这条命令,更新过一次依赖包,但问题是不是出在这里呢?
我先去百度了一下Next主题的MathJax渲染的问题。在简书的这篇博文里,找到了这样一段话:
Hexo默认使用"hexo-renderer-marked"引擎渲染网页,该引擎会把一些特殊的markdown符号转换为相应的html标签,比如在markdown语法中,下划线'_'代表斜体,会被渲染引擎处理为<em>标签。
……
类似的语义冲突的符号还包括'*', '{', '}', '\'等。
但是我当时在开启Next的渲染时,已经解决过上述问题了,在next下的_config.yml中,有详细的描述
1 | # Math Equations Render Support |
即第13行,需要安装hexo-renderer-pandoc或hexo-renderer-kramed插件来支持MathJax,我这里安装的是hexo-renderer-kramed。现在渲染有问题,是不是依赖包kramed的版本太高了?或者mathjax的cdn有问题?在重装了kramed稍微低一点的版本,更改了好几次cdn后,问题依旧。
既然是渲染的问题,我又去了GitHub的Next项目中,在这个issue里发现了一些渲染的问题,但很遗憾,并没有解决我的问题。在hexo-renderer-kramed项目的issue中我也没有发现类似的问题。
那我换成hexo-renderer-pandoc这个插件会不会渲染成功呢?于是,卸载之前的kramed,安装pandoc,然后
1 | hexo clean |
终端报错,搜索无果,解决无望
不抛弃不放弃,看第11行,Next现在支持两种渲染引擎的嘛,mathjax不行换katex试试。而21行显示KaTex引擎需要hexo-renderer-markdown-it-plus插件的支持。于是我尝试更换为katex引擎,安装插件后执行
1 | hexo clean |
问题更大了
终端报了一堆错误,并且在每一个中文字符后都有"Unicode"之类的字眼。搜索无果,我还是回到了GitHub的Next中,在数学公式——Katex——已知的问题 中,发现了这么一句话:
“不支持 Unicode”
也就是说,如果我的数学公式中出现了中文字符,包括中文的标点符号,都会报错。例如,下面的这句话KaTex就无法正确编译。
1 | $对任意的x \in \mathbb{R}$ |
因此你要写成这样
1 | 对任意的$x \in \mathbb{R}$ |
而上面我出问题的这几个,都是带\或者\后面有内容的,但也并非所有的都不能渲染,像\rightarrow就能成功渲染为,\reals就渲染失败。
当时之所以用\reals,是因为我需要用的符号,在KaTex支持的符号中是这样的
而我现在用的引擎是MathJax,在MathJax支持的命令中
根本就没有\Katex,并且所有带mediawiki-texvc这个标识的,在我现在配置的Next中也无法正常渲染…
。。。。。。。
于是我根据这篇博文尝试将\reals改成\mathbb{R},这下渲染正常了。