hexo-fluid数学公式显示问题处理

在此补充一下之前公式不显示的问题。

虽然Fluid主题支持LaTeX 数学公式,但是需要手动操作,而且我按照教程开启本功能mathjax没有成功,即公式在网页里并没有被渲染和转换。通过网上查找,发现解决这类问题的思路主要是换渲染引擎,例如pandocmathjaxkatex。我目前使用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
  • 更新 MathjaxCDN 链接,打开/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
    5
    post:
    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
hexo clean&&hexo g&&hexo d&&hexo s

hexo-fluid数学公式显示问题处理
https://linxkon.github.io/hexo_fluid数学公式显示问题处理.html
作者
linxkon
发布于
2019年3月15日
许可协议