前言

整理数据结构和操作系统复习资料时发现,出现了许多公式,想到大一选修课选过LaTeX,就在编辑器Typora试了一下,发现本地是正常显示的,Markdown语法是支持\(\LaTeX\)

但是部署到hexo以后,发现公式无法正常显示,只能显示出LaTeX语法对应代码

于是尝试去对应主题的官网上查找资料,发现Butterfly主题内置了两种LaTeX渲染:mathjax和KaTeX

把mathjax在config文件中设为true,重新部署,发现仍有一些公式无法正常显示,于是就去找对应解决方案

以下就是解决方案

步骤

卸载已有渲染器

在博客目录下打开cmd,输入

1
2
3
npm un hexo-math

npm un hexo-renderer-marked

卸载掉以上两个渲染器

安装hexo-renderer-pandoc渲染器

接着在cmd里输入

1
npm i hexo-renderer-pandoc

下载安装Pandoc

前往官网Pandoc - Installing pandoc,安装最新版Pandoc

安装好后cmd输入

1
pandoc -v

有正常输出即安装成功

我的输出如下

1
2
3
4
5
6
7
pandoc 3.1
Features: +server +lua
Scripting engine: Lua 5.4
User data directory: C:\Users\WinkySpeed\AppData\Roaming\pandoc
Copyright (C) 2006-2023 John MacFarlane. Web: https://pandoc.org
This is free software; see the source for copying conditions. There is no
warranty, not even for merchantability or fitness for a particular purpose.

在config文件中打开mathjax或KaTeX

主题一般自带这两个插件

找到主题对应config文件,Ctrl+F搜索tex,就能搜到LaTeX公式相关插件

mathjax和KaTeX两者只能选择其一开启

mathjax功能貌似比KaTeX高级一些,我就用mathjax

1
2
3
4
# MathJax
mathjax:
enable: true
per_page: true

保存退出后重新部署就可以正常显示LaTeX公式了

LaTeX相关

行内公式的用法和LaTeX一致,用两个$符号包住公式就可以正常显示,如

1
$\log_2{n^2}$ 

显示为\(\log_2{n^2}\)


我在使用LaTeX时经常用\[ \]来表示行间公式,但是Markdown语法中不支持用这种写法编辑行间公式

如果要写行间公式,就需要用两个$符号,再输入回车,打开Markdown的公式

如果要换行,就需要加上\begin{align} \end{align}\begin{gather} \end{gather}

其中不带编号的版本为\begin{align*} \end{align*}\begin{gather*} \end{gather*}

然后再在末尾加\\才能正常换行

更详细的用法,比如等号对齐,可以查看lshort-zh-cn,写LaTeX必备

比如

1
2
3
4
$$
a+b=c\\
x+y=z\\
$$

的显示结果为 \[ a+b=c\\ x+y=z\\ \] 作为对比,下方代码

1
2
3
4
5
6
$$
\begin{align*}
a+b=c\\
x+y=z\\
\end{align*}
$$

的显示结果为 \[ \begin{align*} a+b=c \\ x+y=z \\ \end{align*} \]

然后再用LaTeX的数学公式语法,就能正常显示

补充:cases*环境,在typora里可以正常显示,但hexo上就不能

解决办法:换为cases环境,不加*





参考资料

Hexo数学公式显示问题

Butterfly - A Simple and Card UI Design theme for Hexo

lshort-zh-cn