0%

在 Hexo 博客中,我们往往会编写一些数学公式,所以不得不启动 LaTex。LaTeX(LATEX,音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,可以生成非常复杂的数学公式。

安装依赖

1
2
npm uninstall hexo-renderer-marked –save
npm install hexo-renderer-kramed –save

解决语义冲突

在博客根目录下,修改 node_modules\kramed\lib\rules\inline.js

第11行和第20行,修改如下内容:

1
2
3
4
5
//  escape: /^\\([\\`*{}\[\]()#$+\-.!_>])/,
escape: /^\\([`*\[\]()#$+\-.!_>])/,

// em: /^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,

更新主题里面的配置

mathjax 设置为 true。

1
2
3
math:
mathjax:
enable: true

在博客中声明

在博客头部,声明如下内容。

1
2
3
--
mathjax: true
--

这时就可以插入数学公式了。

公式回顾

高中所学的排列组合,我们用程序来模拟一下。

如果是从 n 个元素中取出 n 个元素进行排列,那一共有 n! 种排法。

因为,有 n 个元素,放入 n 个盒子里,第1个盒子有 n 种取法,第2个盒子有 n - 1 种取法,第 n 个盒子有 1 种取法,根据分步算法,n (n - 1) (n - 2) 1 = n! 。

那如果是 n 个元素,任取 m 个排列,那同理能得出如下公式。

$ P_n^m=\frac{n!}{(n-m)!} $

如果是组合,我们把 m 个元素的阶乘除掉即可。

$ C_n^m=\frac{n!}{(n-m)!m!} $

同时,排列组合还有如下两个重要公式:

$ P_{n+1}^m=P_n^m+mP_n^{m-1} $

$ C_{n+1}^m=C_n^m+C_n^{m-1} $

排列

1
2
3
4
5
6
7
8
9
10
11
12
import itertools
list = range(3)
p = itertools.permutations(list, 2)
for i in p:
print(i)

(0, 1)
(0, 2)
(1, 0)
(1, 2)
(2, 0)
(2, 1)

组合

1
2
3
4
5
6
7
c = itertools.combinations(list, 2)
for i in c:
print(i)

(0, 1)
(0, 2)
(1, 2)

如果要显示 %,我们需要在前面再加一个 %,做为转义用。

1
String.format("%d%%", 100);

这时才会正确显示 100%