MathJax数学公式
MathJax 公式笔记
Hexo博客中使用 MathJax js ,参考 Hexo博客(13)添加MathJax数学公式渲染
公式书写依然按照 MarkDown 语法来,基本上也和 LaTeX 相同,单$
符引住的是行内公式,双$$
符引住的是行间公式。
MathJax公式书写参考
http://meta.math.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference
Getting Started with MathJax
http://docs.mathjax.org/en/latest/start.html
MathJax官网
https://www.mathjax.org/
在线 Latex 编辑
https://www.latexlive.com/
MathJax行内公式
含下划线_
的公式$x_mu$
:$x_mu$
向下取整 $\lfloor x \rfloor$
$\lfloor x \rfloor$
向上取整 $\lceil x \rceil$
$\lceil x \rceil$
希腊字符$\sigma$
:$\sigma$
行内公式$y=ax+b$
:$y=ax+b$
MathJax三角函数
$\cos 2\theta = \cos^2 \theta - \sin^2 \theta = 2 \cos^2 \theta$
$\cos 2\theta = \cos^2 \theta - \sin^2 \theta = 2 \cos^2 \theta$
MathJax集合运算
$M(\beta^{\ast}(D),D) \subseteq C$
$ M(\beta^{\ast}(D),D) \subseteq C $
MathJax指数对数
$$ \log_a b = \frac{\log_c b}{\log_c a} = \frac{\ln b}{\ln a} $$
$$ \log_a b = \frac{\log_c b}{\log_c a} = \frac{\ln b}{\ln a} $$
$$ \log_a b = \frac{1}{\log_b a} $$
$$ \log_a b = \frac{1}{\log_b a} $$
$$ \log_{a^n} b = \frac{\log_a b}{n} $$
$$ \log_{a^n} b = \frac{\log_a b}{n} $$
$$ \log_a b^n = n \log_a b $$
$$ \log_a b^n = n \log_a b $$
$$ \log_{a^n} b^m = \frac{m}{n} \log_a b $$
$$ \log_{a^n} b^m = \frac{m}{n} \log_a b $$
$$ x = e^{\ln x} $$
$$ x = e^{\ln x} $$
$$ a^x = e^{\ln {a^x}} = e^{x \ln a} $$
$$ a^x = e^{\ln {a^x}} = e^{x \ln a} $$
$$ \sqrt{x} = x^{\frac{1}{2}} = (e^{\ln x})^{\frac{1}{2}} = e^{\frac{1}{2} \ln x} $$
$$ \sqrt{x} = x^{\frac{1}{2}} = (e^{\ln x})^{\frac{1}{2}} = e^{\frac{1}{2} \ln x} $$
MathJax手动输入空格
MathJax自己决定是否增加空格。所以直接输入空格是没用的。
$a\ b$
单个空格
$a\ b$
$a \quad b$
quad 空格
$a \quad b$
$a \qquad b$
qquad 空格
$a \qquad b$
MathJax行间公式
行间公式$$ \sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6} $$
:
$$ \sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6} $$
一元二次方程求根公式 $$ x_{1,2} = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a} $$
:
$$ x_{1,2} = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a} $$
斐波那契数列通项公式
$$
f(n) =
\frac{1}{\sqrt{5}}
\left[ \left( \frac{1 + \sqrt{5}}{2} \right)^n - \left( \frac{1 - \sqrt{5}}{2} \right)^n \right]
$$
$$
f(n) =
\frac{1}{\sqrt{5}}
\left[ \left( \frac{1 + \sqrt{5}}{2} \right)^n - \left( \frac{1 - \sqrt{5}}{2} \right)^n \right]
$$
n维空间中两个向量 $A(a_1,a_2,…,a_n)$ 和 $B(b_1,b_2,…,b_n)$ 之间的欧式距离是:
$$
d(A,B) = \sqrt{\sum_{i=1}^n{(a_i-b_i)^2}}
$$
$$
d(A,B) = \sqrt{\sum_{i=1}^n{(a_i-b_i)^2}}
$$
平面中两点 $(x_1,y_1)$ 和 $(x_2,y_2)$ 之间的直线距离就是欧式距离:
$$
\sqrt{(x_1-x_2)^2 + (y_1-y_2)^2}
$$
$$
\sqrt{(x_1-x_2)^2 + (y_1-y_2)^2}
$$
n维空间中两个向量 $A(a_1,a_2,…,a_n)$ 和 $B(b_1,b_2,…,b_n)$ 之间的余弦距离是:
$$
\cos \theta = \frac
{\sum_1^n{(a_i \times b_i)}}
{\sqrt{\sum_1^n(a_i^2)} \times \sqrt{\sum_1^n{b_i^2}}}
$$
$$
\cos \theta = \frac
{\sum_1^n{(a_i \times b_i)}}
{\sqrt{\sum_1^n(a_i^2)} \times \sqrt{\sum_1^n{b_i^2}}}
$$
二维空间中向量 $A(x_1,y_1)$ 和 $B(x_2,y_2)$ 之间的夹角的余弦为
$$
\cos \theta = \frac
{x_1x_2 + y_1y_2}
{\sqrt{x_1^2 + y_1^2} \sqrt{x_2^2 + y_2^2}}
$$
$$
\cos \theta = \frac
{x_1x_2 + y_1y_2}
{\sqrt{x_1^2 + y_1^2} \sqrt{x_2^2 + y_2^2}}
$$
MathJax大括号右多行赋值(分支等式)
双 \\
公式内换行,cases
实现大括号右多行赋值,&
用于列对齐
注意:为了和 marked.js 兼容,公式内改为4个反斜线 \\\\
换行。
$$
f(n) =
\begin{cases}
n/2, & \text{if $n$ is even} \\\\
3n+1, & \text{if $n$ is odd}
\end{cases}
$$
$$
f(n) =
\begin{cases}
n/2, & \text{if $n$ is even} \\
3n+1, & \text{if $n$ is odd}
\end{cases}
$$
又比如最长公共子序列的动态规划递推公式:
$$
lcs[i,j] =
\begin{cases}
0, & \text{if $i = 0$ or $j = 0$ } \\\\
cls[i-1, j-1] + 1, & \text{if $i,j > 0$ and $x_i = y_j$ } \\\\
max(cls[i-1][j], cls[i][j-1]), & \text{if $i,j > 0$ and $x_i \neq y_j$ }
\end{cases}
$$
$$
lcs[i,j] =
\begin{cases}
0, & \text{if $i = 0$ or $j = 0$ } \\
cls[i-1, j-1] + 1, & \text{if $i,j > 0$ and $x_i = y_j$ } \\
max(cls[i-1][j], cls[i][j-1]), & \text{if $i,j > 0$ and $x_i \neq y_j$ }
\end{cases}
$$
MathJax方程组
线段 (x1, y1)
- (x2, y2)
的参数方程为
$$
\begin{cases}
x = x_1 + t_1(x_2 - x_1) \\\\
y = y_1 + t_1(y_2 - y_1)
\end{cases}
\quad t_1 \in [0,1]
$$
$$
\begin{cases}
x = x_1 + t_1(x_2 - x_1) \\
y = y_1 + t_1(y_2 - y_1)
\end{cases}
\quad t_1 \in [0,1]
$$
MathJax多行公式对齐
比如多行公式推导中常用的等号对齐begin{split}
表示开始多行公式,end{split}
表示结束;公式中用\\
表示回车到下一行,&
表示对齐的位置。
为了和 marked.js 兼容,公式内改为4个反斜线\\\\
换行。
$$
\begin{equation}
\begin{split}
\frac{\partial^2 f}{\partial{x^2}} &= \frac{\partial(\Delta_x f(i,j))}{\partial x} = \frac{\partial(f(i+1,j)-f(i,j))}{\partial x} \\\\
&= \frac{\partial f(i+1,j)}{\partial x} - \frac{\partial f(i,j)}{\partial x} \\\\
&= f(i+2,j) -2f(f+1,j) + f(i,j)
\end{split}
\nonumber
\end{equation}
$$
$$
\begin{equation}
\begin{split}
\frac{\partial^2 f}{\partial{x^2}} &= \frac{\partial(\Delta_x f(i,j))}{\partial x} = \frac{\partial(f(i+1,j)-f(i,j))}{\partial x} \\
&= \frac{\partial f(i+1,j)}{\partial x} - \frac{\partial f(i,j)}{\partial x} \\
&= f(i+2,j) -2f(f+1,j) + f(i,j)
\end{split}
\nonumber
\end{equation}
$$
MathJax公式自动编号
要想MathJax支持公式编号,需添加AMS支持,在脚本中添加如下MathJax配置项:
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
TeX: { equationNumbers: { autoNumber: "AMS" } }
});
</script>
我上面mathjax.ejs
脚本中已加入公式编号的配置。
书写时只要使用begin{equation}环境就会自动编号:
$$
\begin{equation}
\end{equation}
$$
注意此时会自动将文档内的所有begin{equation}公式连续编号,例如:
$$
\begin{equation}
\sum_{i=0}^n F_i \cdot \phi (H, p_i) - \sum_{i=1}^n a_i \cdot ( \tilde{x_i}, \tilde{y_i}) + b_i \cdot ( \tilde{x_i}^2 , \tilde{y_i}^2 )
\end{equation}
$$
$$
\begin{equation}
\beta^*(D) = \mathop{argmin} \limits_{\beta} \lambda {||\beta||}^2 + \sum_{i=1}^n max(0, 1 - y_i f_{\beta}(x_i))
\end{equation}
$$
$$
\begin{equation}
\sum_{i=0}^n F_i \cdot \phi (H, p_i) - \sum_{i=1}^n a_i \cdot ( \tilde{x_i}, \tilde{y_i}) + b_i \cdot ( \tilde{x_i}^2 , \tilde{y_i}^2 )
\end{equation}
$$
$$
\begin{equation}
\beta^*(D) = \mathop{argmin} \limits_{\beta} \lambda {||\beta||}^2 + \sum_{i=1}^n max(0, 1 - y_i f_{\beta}(x_i))
\end{equation}
$$
禁止自动编号
在end{equation}前加\nonumber
可禁止对此公式自动编号,例如:
$$
\begin{equation}
\sum_{i=0}^n F_i \cdot \phi (H, p_i) - \sum_{i=1}^n a_i \cdot ( \tilde{x_i}, \tilde{y_i}) + b_i \cdot ( \tilde{x_i}^2 , \tilde{y_i}^2 )
\nonumber
\end{equation}
$$
$$
\begin{equation}
\beta^*(D) = \mathop{argmin} \limits_{\beta} \lambda {||\beta||}^2 + \sum_{i=1}^n max(0, 1 - y_i f_{\beta}(x_i))
\end{equation}
$$
$$
\begin{equation}
\sum_{i=0}^n F_i \cdot \phi (H, p_i) - \sum_{i=1}^n a_i \cdot ( \tilde{x_i}, \tilde{y_i}) + b_i \cdot ( \tilde{x_i}^2 , \tilde{y_i}^2 )
\nonumber
\end{equation}
$$
$$
\begin{equation}
\beta^*(D) = \mathop{argmin} \limits_{\beta} \lambda {||\beta||}^2 + \sum_{i=1}^n max(0, 1 - y_i f_{\beta}(x_i))
\end{equation}
$$
MathJax公式手动编号
可以在公式书写时使用\tag{手动编号}
添加手动编号,例如:
$$
\begin{equation}
\sum_{i=0}^n F_i \cdot \phi (H, p_i) - \sum_{i=1}^n a_i \cdot ( \tilde{x_i}, \tilde{y_i}) + b_i \cdot ( \tilde{x_i}^2 , \tilde{y_i}^2 ) \tag{1.2.3}
\end{equation}
$$
$$
\begin{equation}
\sum_{i=0}^n F_i \cdot \phi (H, p_i) - \sum_{i=1}^n a_i \cdot ( \tilde{x_i}, \tilde{y_i}) + b_i \cdot ( \tilde{x_i}^2 , \tilde{y_i}^2 ) \tag{1.2.3}
\end{equation}
$$
不加\begin{equation} \end{equation}
也可以,例如:
$$
\beta^*(D) = \mathop{argmin} \limits_{\beta} \lambda {||\beta||}^2 + \sum_{i=1}^n max(0, 1 - y_i f_{\beta}(x_i)) \tag{我的公式3}
$$
$$
\beta^*(D) = \mathop{argmin} \limits_{\beta} \lambda {||\beta||}^2 + \sum_{i=1}^n max(0, 1 - y_i f_{\beta}(x_i)) \tag{我的公式3}
$$
行内公式加\tag{}
后会自动成为行间公式,例如:$z = (p_0, ..... , p_n) \tag{公式21} $
$z = (p_0, ….. , p_n) \tag{公式21} $
又如:
$ s = r cos(a+b) = r cos(a) cos(b) - r sin(a) sin(b) \tag{1.1} $
$ t = r sin(a+b) = r sin(a) cos(b) - r cos(a) sin(b) \tag{1.2} $
$ s = r cos(a+b) = r cos(a) cos(b) - r sin(a) sin(b) \tag{1.1} $
$ t = r sin(a+b) = r sin(a) cos(b) - r cos(a) sin(b) \tag{1.2} $
- 参考Automatic Equation Numbering
http://docs.mathjax.org/en/latest/tex.html#automatic-equation-numbering
MathJax将下标放到正下方
1、如果是数学符号,那么直接用 \limits
命令放在正下方,如 max 函数下面的取值范围,需要放在 max 的正下方。可以如下实现:
$ \max \limits_{a \leq x \leq b} f(x) $
$ \max \limits_{a \leq x \leq b} f(x) $
如果不加 \limits
,直接使用 \max_{}
则是放在右下角标的,例如:
$ \max_{a \leq x \leq b} f(x) $
$ \max_{a \leq x \leq b} f(x) $
2、若是普通符号,那么要用 \mathop
先转成数学符号再用 \limits
,如$ \mathop{wonima} \limits_{i=1} $
$ \mathop{wonima} \limits_{i=1} $
3、对于双美元符的行间公式,Latex默认下标是放在正下方。所以就不需要加 \limits
例如
$$ \max_{a \leq x \leq b} f(x) $$
$$ \max_{a \leq x \leq b} f(x) $$
MathJax控制括号大小
如果直接输入括号(花括号需要进行转义),其大小是固定的,如果公式的高度比较大,就会显得很不协调。
使用 \left
和 \right
能自动控制不同层次括号的大小,需要配对使用
$\left( \frac{a}{b} \right)$
$\left( \frac{a}{b} \right)$
$\left[ \frac{a}{b} \right]$
$\left[ \frac{a}{b} \right]$
$$ \left( \frac{3}{5} \left[ 3 + 2 * \left( a + b \right) \right] \right) $$
$$ \left( \frac{3}{5} \left[ 3 + 2 * \left( a + b \right) \right] \right) $$
$$
f\left(
\left(
\frac{
1+x
}{
\left( \frac{x}{y}+\frac{y}{x} \right) \left(u+1\right)
}+a
\right)^{3/2}
\right)
$$
$$
f\left(
\left(
\frac{
1+x
}{
\left( \frac{x}{y}+\frac{y}{x} \right) \left(u+1\right)
}+a
\right)^{3/2}
\right)
$$
还可以使用 \big
等一系列标签,包括 \big
,\Big
,\bigg
,\Bigg
。按着顺序,它们控制的括号不断变大。
不需要成对使用,可以单独控制半个括号。括号的大小由具体使用的标签控制,不能自动调整,所以需要注意匹配。
$$ \bigg( \frac{3}{5} \Big( 3 + 2 * \big ( a + b \big ) \Big) \bigg) $$
$$ \bigg( \frac{3}{5} \Big( 3 + 2 * \big ( a + b \big ) \Big) \bigg) $$
MathJax矩阵
注意:为了和 marked.js 兼容,公式内改为4个反斜线\\\\
换行。
可以用 $$\begin{matrix} ... \end{matrix}$$
来表示矩阵。将矩阵元素放在 \begin
和 \end
之间即可。
用 \\
来分割行,为了和 marked.js 兼容,公式内改为4个反斜线\\\\
换行
用 &
来分割同一行的矩阵元素。
无括号矩阵
$$
\begin{matrix}
1 & x & x^2 \\\\
1 & y & y^2 \\\\
1 & z & z^2 \\\\
\end{matrix}
$$
$$
\begin{matrix}
1 & x & x^2 \\
1 & y & y^2 \\
1 & z & z^2 \\
\end{matrix}
$$
方括号矩阵
$$
A =
\begin{bmatrix}
1 & 0 & 2 \\\\
-2 & 1 & 3 \\\\
\end{bmatrix}
$$
$$
A =
\begin{bmatrix}
1 & 0 & 2 \\
-2 & 1 & 3 \\
\end{bmatrix}
$$
矩阵运算
$$
\left(
\begin{array}{c}
s \\\\
t
\end{array}
\right)
=
\left(
\begin{array}{cc}
cos(b) & -sin(b) \\\\
sin(b) & cos(b)
\end{array}
\right)
\left(
\begin{array}{c}
x \\\\
y
\end{array}
\right)
$$
$$
\left(
\begin{array}{c}
s \\
t
\end{array}
\right)
=
\left(
\begin{array}{cc}
cos(b) & -sin(b) \\
sin(b) & cos(b)
\end{array}
\right)
\left(
\begin{array}{c}
x \\
y
\end{array}
\right)
$$
有括号有竖线矩阵
$$
\left[
\begin{array}{cc|c}
1&2&3\\\\
4&5&6
\end{array}
\right]
$$
$$
\left[
\begin{array}{cc|c}
1&2&3\\
4&5&6
\end{array}
\right]
$$
行内小矩阵
$\bigl( \begin{smallmatrix} a & b \\ c & d \end{smallmatrix} \bigr)$
这是一个行内小矩阵$\bigl( \begin{smallmatrix} a & b \ c & d \end{smallmatrix} \bigr)$,直接嵌入行内。
这里有个问题,上面的写法在矩阵内没有换行,我看了下源码,双反斜杠\\
又被MarkDown渲染引擎转义为单个反斜杠了,解决方法是写三个反斜杠\\\
或在双反斜杠后换行即可:$\bigl( \begin{smallmatrix} a & b \\\ c & d \end{smallmatrix} \bigr)$
这是一个行内小矩阵$\bigl( \begin{smallmatrix} a & b \\ c & d \end{smallmatrix} \bigr)$,直接嵌入行内。
上一篇 LeetCode.1160.Find Words That Can Be Formed by Characters 拼写单词
页面信息
location:
protocol
: host
: hostname
: origin
: pathname
: href
: document:
referrer
: navigator:
platform
: userAgent
: