hexo-fluid数学公式显示问题处理
在此补充一下之前公式不显示的问题。
虽然Fluid主题支持LaTeX
数学公式,但是需要手动操作,而且我按照教程开启本功能mathjax
没有成功,即公式在网页里并没有被渲染和转换。通过网上查找,发现解决这类问题的思路主要是换渲染引擎,例如pandoc
、mathjax
、katex
。我目前使用mathjax
,操作如下:
卸载默认引擎,并安装这个新的渲染引擎
1
2$ npm uninstall hexo-renderer-marked --save
$ npm install hexo-renderer-kramed --saveCopy修改
/node_modules/hexo-renderer-kramed/lib/renderer.js
1
2
3
4
5
6
7// Change inline math rule
function formatText(text) {
// Fit kramed's rule: $$ + \1 + $$
// 直接返回text
// return text.replace(/`\$(.*?)\$`/g, '$$$$$1$$$$');
return text;
}Copy修改hexo的渲染源码
/node_modules/kramed/lib/rules/inline.js
1
2
3
4
5
6// 去掉`\\`的额外转义,第11行,将其修改为
// escape: /^\\([\\`*{}\[\]()# +\-.!_>])/,
escape: /^\\([`*{}\[\]()# +\-.!_>])/,
// 将em标签对应的符号中,去掉`_`,第20行,将其修改为
// em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,Copy停止使用
hexo-math
,安装hexo-renderer-mathjax
1
2
3$ npm uninstall hexo-math --save
// 不知道是不是必要的
$ npm install hexo-renderer-mathjax --saveCopy更新
Mathjax
的CDN
链接,打开/node_modules/hexo-renderer-mathjax/mathjax.html
,在最后一行添加js:- 网上推荐的上面这个,但我使用失败了
1
// <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML"></script>Copy
- 推荐下面这个,亲测可行,不过偶尔出问题,需要多部署几次就ok
1
<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML"></script>Copy
- 更新于2020年6月6日:如果有人看到这,可以注意下
MathJax.js
版本已经到3.0.5了,参照mathjax文档,那么现在的上面的一步可以自行修改,如果控制台报错可以到mathjax CDN files下找到合适的js代替
1
2
3<script id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-svg-full.js">
</script>Copy- 当然,如果博客的内部静态文件第三方库包含了mathjax,上面的
MathJax.js
不用导入都行,导的不对甚至有冲突,虽然不影响公式的显示,但会在控制台报错。
经过Ningsir提醒,删除掉hexo-renderer-mathjax就行了,简单省事。
按照Fluid的快速开始,需要修改主题配置,打开
/source/_data/fluid_config.yml
文件1
2
3
4
5post:
math:
enable: true
specific: false
engine: mathjaxCopy在根目录下修改
_config.yml
,添加1
mathjax: trueCopy
在
Front-matter
中打开MathJax
1
2
3
4
5
6
7
8
9
10
11---
layout: post
title: title
date: date
categories:
- categories
tags:
- tags1
- tags2
mathjax: true
---Copy显示数学公式 \[\Sigma({n} ; {p})=\left\{\left(\zeta_{1}, \ldots, \zeta_{r}\right) \in \mathbb{C}^{n_{1}} \times \cdots \times \mathbb{C}^{n_{r}}: \sum_{k=1}^{r}\left\|{\zeta}_{k}\right\|^{2 p_{k}} < 1\right\}\]
最后如果公式还是乱码可以尝试重启电脑,然后先尝试部署一下:
1 |
|