MathJax(2):Markdown中使用MathJax

本文介绍了在Markdown文件中插入MathJax的方法。

直接插入

在html中插入以下代码,则可以用$ $来插入行内公式,$$ $$来插入单独成行的公式。

1
2
3
4
5
6
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}
});
</script>
<script type="text/javascript" async src="path-to-mathjax/MathJax.js?config=TeX-AMS_CHTML"></script>

这是一个完整的可以工作的例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<head>
<title>MathJax TeX Test Page</title>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}});
</script>
<script type="text/javascript" async
src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_CHTML">
</script>
</head>
<body>
When $a \ne 0$, there are two solutions to \(ax^2 + bx + c = 0\) and they are
$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$
</body>
</html>

在使用Markdown然后生成html的时候,Markdown有一些符号有特殊含义会被解析器转换成html的tag,如: 斜体*被斜体的文字*,斜体_被斜体的文字_等。
这样$x _ i = y _ i$ 或者 $x * y = y * x$
会被解析成 $x i=y i$ 或者 $x y = y x$.
我们可以使用转义符号\来避免Markdown解析器对* *_ _的转换。
写成$x \_ i = y \_ i$ $x * y = y * x$,就可以正确解析为$x_i = y_i$ $x * y = y * x$.

此方法优点: 简单,不需要插件辅助; 缺点: 不是原生的Tex语法。

使用插件

对于不同的markdown解析器应该会有不同的解决方案,如Hexo可以使用hexo-math插件
hexo-math支持MathJax和KaTex.
使用标签则可以不需要对特殊符号进行转义。

1
2
3
4
5
6
7
{% math %}
\begin{aligned}
\dot{x} & = \sigma(y-x) \\
\dot{y} & = \rho x - y - xz \\
\dot{z} & = -\beta z + xy
\end{aligned}
{% endmath %}

此方法优点: 原生Tex语法; 缺点: 复杂,需要插件支持.

Reference:

  1. TeX and LaTeX input
  2. hexo-math插件