方案1(也是最简单的方案):

不必理会配置文件及渲染器相关的任何东西,只需要注意复杂行间公式的保护,具体参考:Hexo支持LaTeX数学公式渲染 - KEVIN’S BLOG (kevinchu.top)

1.1 使用方法:

选择你想要使用的引擎(MathJax或KaTeX选其一),直接在markdown文章内容中添加引入对应引擎自动渲染js的代码即可(任意位置,建议放在内容首部或尾部),引入代码参考1.3。

1.2 代码保护

在markdown文档中对行间公式进行保护,方法来源于:结合MathType和MathJax在Hexo博客中插入数学公式 - 知乎 (zhihu.com)

1
2
3
4
5
6
7
8
{% raw%}
$$
\kappa \left( t \right) = \left\{ \begin{array}{l}
\frac{1}{{\varepsilon + {{\left( {1 - \frac{t}{T}} \right)}^n}}},t \in \left[ {0,T} \right]\\
\frac{1}{\varepsilon },t \in \left( {T, + \infty } \right)
\end{array} \right. \tag{1}
$$
{% endraw %}

显示效果为:

$$ \kappa \left( t \right) = \left\{ \begin{array}{l} \frac{1}{{\varepsilon + {{\left( {1 - \frac{t}{T}} \right)}^n}}},t \in \left[ {0,T} \right]\\ \frac{1}{\varepsilon },t \in \left( {T, + \infty } \right) \end{array} \right. \tag{1} $$

当然,也可以参考其他方案:Hexo下mathjax的转义问题 | 天空的城 (shomy.top)

1.3 引入自动渲染的js代码

直接在编辑的文档中引入自动渲染的代码:

引入MathJax自动渲染脚本代码(需开启对$分隔符的支持):

1
2
3
4
5
6
7
8
9
10
<script>
MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']]
}
};
</script>
<script id="MathJax-script" async
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">
</script>

引入KaTeX自动渲染脚本代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.8/dist/katex.min.css" integrity="sha384-GvrOXuhMATgEsSwCs4smul74iXGOixntILdUW9XmUC6+HX0sLNAK3q71HotJqlAn" crossorigin="anonymous">
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.8/dist/katex.min.js" integrity="sha384-cpW21h6RZv/phavutF+AuVYrr+dA8xD9zs6FwLpaCct6O9ctzYFfFr4dgmgccOTx" crossorigin="anonymous"></script>
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.8/dist/contrib/auto-render.min.js" integrity="sha384-+VBxd3r6XgURycqtZ117nYw44OOcIax56Z4dCRWbxyPt0Koah1uHoK0o4+/RRE05" crossorigin="anonymous"></script>
<script>
document.addEventListener("DOMContentLoaded", function() {
renderMathInElement(document.body, {
// customised options
// • auto-render specific keys, e.g.:
delimiters: [
{left: '$$', right: '$$', display: true},
{left: '$', right: '$', display: false},
{left: '\\(', right: '\\)', display: false},
{left: '\\[', right: '\\]', display: true}
],
// • rendering keys, e.g.:
throwOnError : false
});
});
</script>

1.4 存在的问题

2024-04-21 22:12:29
不知道什么原因,在使用该方法时我的行内公式全部默认不是斜体了,等知道怎么改再更新。

2024-04-21 23:07:47
发现之前卸载了所有的渲染器,重新下载默认渲染器hexo-renderer-marked后解决了行内公式不是斜体的问题,但公式相较于文字垂直方向没有居中对齐,公式相比于文字偏上,MarkDown文件转HTML后未出现任何问题。

2024-04-21 23:18:42
安装hexo-renderer-pandoc@0.4.0后仍旧偏上

2024-04-21 23:48:42
文档发给别人博客时发现完全正常,猜测是之前使用别的方法时残留的mathjax和katex相关的渲染器,随后完全恢复正常。

2024-04-22 12:59:41
使用中发现行内出现复杂公式时也会报错,于是把和放到了所有内容的前后,于是行内或者行间公式都变正常,且内部无需进行任何修饰。但此时内部MarkDown语法全部失效。参考这篇博客,我认为是因为存在 }} 情况时造成的

方案2

更换渲染器@upupming/hexo-renderer-markdown-it-plus,参考链接