1.
LATEX
是什么?
在介绍
TEX
高德纳(Donald Knuth,1938/01/10 -)最早开始自行编写
LATEX
2.
LATEX
能干什么?
这些公式都是通过
$$\sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6}$$
$\log_3 G$
$\Omega (N^2)$
$$ x = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a} $$
可以发现,有些公式和正常文字一样,有些却是在页面正中间。这是行内公式和行间公式的区别,对应到语法上就是行内公式使用$formula$
,而行间公式使用$$formula$$
, formula
代表公式的内容。
3.
LATEX
在Markdown中的用法
先说
1. 在数学公式中,经常用到 上标和下标,在LaTeX语法中对应^
和-
。例如x_i^2
:
\log_2 N
:
2. 分组,简单来说就是当遇到下标或者上标不是单字符时会用到,例如
x_a1^2
会得出错误的公式
a
和1
属于同一组,所以需要声明它们是一起的。
{}
将同一组的符号括到一起。刚才的式子正确表示是x_{a1}^2
。
3. 括号,如果式子中本来就有括号()[]{}
,那么使用时()[]
正常使用即可,而{}
在括号之前需要加转义符\
。例如
(2 + 3)[4 + 4]\{5 + 6\}
。
4. 分数,分数通过\frac{}{}
实现。例如
\frac{3}{5}
。稍微复杂的分数也能表示
\frac{\log_2 N + N^3}{\ln N - 2N^2}
。
在Markdown中可以使用$formula$
或$$formula$$
插入公式,也可以使用\\(formula\\)
插入,但是由于Hexo使用的markdown解析引擎的问题,后一种时有出错,推荐使用第一种方式。
4. 附录
常见函数表达方法:
函数名称 | 函数符号 | 表达方法 |
---|---|---|
根号 |
|
\sqrt3 |
求和 |
|
\sum_{i=0}^N i |
求积 |
|
\prod_{0}^5 a |
积分 |
|
\int_{0}^\infty x^3 |
多次开方 |
|
\sqrt[3]{\frac xy} |
三角函数 |
|
\sin , \cos , \tan
|
极限 |
|
\lim_{x\to0} |
对数函数 |
|
\log_5 x , \ln y
|
常见符号表示方法:
符号名称 | 符号 | 表达方法 |
---|---|---|
希腊字母 |
|
\alpha, \beta, …, \omega |
希腊字母大写 |
|
\Gamma, \Delta, …, \Omega |
比较符 |
|
\lt \gt \le \ge \neq |
运算符 |
|
\times \div \pm \mp |
常见数学符号1 |
|
\cup \cap \setminus \subset \subseteq \subsetneq \supset \in \notin \emptyset \varnothing |
常见数学符号2 |
|
\land \lor \lnot \forall \exists \top \bot \vdash \vDash |
箭头 |
|
\to \rightarrow \leftarrow \Rightarrow \Leftarrow \mapsto |
在 list of currently supported LATEXLATEX commands中有更多
5. 遇到的问题
刚开始使用的时候,经常发现页面中的公式解析出错,例如_
在Hexo中会生成斜体的字符,在
可行的解决方法有两个:
- 更换Hexo的markdown引擎。Hexo自带的引擎是
hexo-renderer-marked
,可以换成功能更强大的Pandoc。
npm uninstall hexo-renderer-marked --save // 卸载旧的引擎
npm install hexo-renderer-pandoc --save // 安装pandoc
- 手动修改Hexo渲染源码
修改hexo的渲染源码: 打开nodes_modules/marked/lib/marked.js
:
第一步: 去掉\的额外转义。 先备份一下,然后修改第449行
escape: /^\\([\\`*{}\[\]()# +\-.!_>])/,
改为:
escape: /^\\([`*{}\[\]()# +\-.!_>])/,
这样就会去掉\的转义了。
第二步:将em
标签对应的符号中,去掉_
。第459行
em: /^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
修改为:
em:/^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
因为markdown中有*
可以表示斜体,_
就去掉了,这样问题就解决了。
这部分参考天空的城的Hexo下mathjax的转义问题。
参考网站
[1] mathjax官网
[2] TeX*
[3] LaTeX*
[3] Github上的issue
[4] MathJax basic tutorial and quick reference
[5] 知乎上的公式是怎么打出来的?
[6] hexo 如何解决markdown下划线要加反斜杠,以及如何使用其他markdown的渲染引擎?
[7] Hexo下mathjax的转义问题
[8] 如何处理Hexo和MathJax的兼容问题