Hexo-在文章里显示的数学公式

本文最后更新于:2020年9月27日 晚上

问题

hexo默认使用hexo-renderer-marked引擎去渲染网页,它会把利用Markdown语法写的文本去转换为相应的html标签。
在利用MarkdownMathJax公式的时候,经常会用到下划线_表示下标,但是下划线_会被hexo的默认引擎hexo-renderer-marked渲染成html中的<em>标签,表示斜体。
这样一来,我们写的MathJax公式就被错误渲染了,也就没办法正确显示出来。

解决

更换 Markdown 渲染器

  1. 卸载原渲染器
    1
    npm uninstall hexo-renderer-marked --save
  2. 安装新渲染器
    1
    npm install hexo-renderer-kramed --save

    在编写时启用

    对于需要用到MathJax公式的文章,要在Front-matter中打开MathJax开关,例如:
    1
    2
    3
    4
    5
    ---
    title: Hexo-在文章里显示的数学公式
    date: 2020-06-04 23:32:17
    mathjax: true
    ---
    需要注意的是,如果主题里整合了这个东西,可能关键词不是mathjax,具体看主题的说明

MathJax公式语法

中文文档

https://mathjax-chinese-doc.readthedocs.io/en/latest/

常用语法

符号 释义 测试用例 最终效果
^ 上标 x{yz}=(1+ex){-2xy^w $ x{yz}=(1+ex){-2xy^w} $
_ 下标 CO_2 $CO_2$
\frac{分子}{分母} or 分子 \over 分母 分数 f(x,y,z)=3y2z(3+\frac{7x+5}{1+y2}) $ f(x,y,z)=3y2z(3+\frac{7x+5}{1+y2}) $
\sqrt[根指数,省略时为2]{被开方数} 开方 \sqrt{2}、\sqrt[3]{9} $\sqrt{2}、\sqrt[3]{9}$
\ldots 与文本底线对齐的省略号 x_1x_2{\ldots}x_n $x_1x_2{\ldots}x_n$
\cdots 与文本中线对齐的省略号 x_1x_2{\cdots}x_n $x_1x_2{\cdots}x_n$
\int_积分下限^积分上限(被积表达式) 积分 \int_1^2n{x2}dx $ \int_1^2n{x2}dx $
f(x)=\begin{cases}语句1\\语句2\\...\end{cases} 分段函数 f(n)=\begin{cases}n/2, & \text{如果$ x<=2 $}\\3n+1, & \text{如果$ x>2 $}\end{cases} $$ f(n)=\begin{cases}n/2, & \text{如果$ x<=2 $}\3n+1, & \text{如果$ x>2 $}\end{cases}$$