Markdown与数学公式
在写偏理科的文章的时候,多多少少会涉及到一些公式、函数的输入,本篇就来讲讲如何在 Markdown 中书写数学公式。
在此之前,我们先介绍下 LaTex 和 MathJax,Markdown 就是基于它们来实现数学公式的输入。
LaTex 简介
LaTex (读作 /ˈ lɑ ː tɛx/ 或 /ˈ leɪtɛx/ ),可以理解为是非常专业的排版工具,是国际上数学、物理、计算机等科技领域的专业排版工具,是科学文献交流和出版的事实标准。
LaTex 尤其适合处理篇幅较长、结构严谨的文档(例如学术论文),并且十分擅长处理复杂的表格和数学公式的排版,画个象棋图、分子结构式、电路图甚至乐谱都不在话下。
缺点:学习门槛高。如果不是数学、物理、计算机等领域的人来折腾这个,可能得一段时间才能上手。
简单介绍到这,如果你想深入了解下,不然看看这个教程:LaTeX 入门与进阶
MashJax 简介
MathJax 是一款运行在浏览器中的开源数学符号渲染引擎,使用 MathJax 可以方便的在浏览器中显示数学公式,不需要使用图片。
而 Typora 就是使用 MashJax 来解析 LaTex 的数学公式的,这一点也在文档里写了:
数学公式块
那么如何输入数学公式呢?数学公式比较特殊,得在数学公式块里才能正常渲染出结果,纯文本或者代码块是不行的。
在 Typora 中打开数学公式块的方法有:
- 菜单栏 → 段落 → 公式块
- 快捷键
Ctrl + Shift + M
- 输入
$$
,然后回车
效果:出现了一个输入框,后续就在这里输入公式
注意:
- 并不是所有编辑器都支持(例如知乎和公众号就不行),如果遇到了不支持的情况很正常。
- 在 VSCode 里也可以直接用这个数学公式块。
快速入门
直接看个例子,例如输入根号 2,语法为:
\sqrt{2}
效果:
内联公式
如果你想输入的公式比较少,可以在一行内搞定,可以使用内联公式。首先在 Typora 中启用该设置:
启用后,建议重启下 Typora。
内联公式示例:
来输入一个根号2:$\sqrt{2}$
效果:来输入一个根号2:
接下来介绍一些常见的公式语法。
在线编辑器
如果你的 Markdown 编辑器不支持,但又想快速尝试下,可以使用 LaTex 在线编辑器,一搜一大堆,例如:https://www.latexlive.com
常用公式语法
这里列出部分公式语法,更多的请参考文末的“参考资料”。
常见运算符
作用 | Markdown 代码 | 效果 |
---|---|---|
上标 | x^2 |
x2 |
下标 | y_1 |
y1 |
分式 | \frac{1}{2} |
|
省略号 | \cdots |
|
矢量 | \vec{a} |
|
积分 | \int{x}dx |
|
积分(带范围) | \int_{1}^{2}{x}dx |
|
极限 | \lim{a+b} |
|
极限(带范围) | \lim_{n\rightarrow+\infty} |
|
累加 | \sum{a} |
|
累加(带范围) | \sum_{n=1}^{100}{a_n} |
|
累乘 | \prod{x} |
|
累乘(带范围) | \prod_{n=1}^{99}{x_n} |
|
向下取整 | \lfloor x \rfloor |
|
向上取整 | \lceil x \rceil |
三角函数
Markdown 代码 | 效果 |
---|---|
\sin |
|
\cos |
其他符号以此类推,就不一一列举了
对数函数
Markdown 代码 | 效果 |
---|---|
\ln2 |
|
\log_28 |
|
\lg10 |
关系运算符
说明 | Markdown 代码 | 效果 |
---|---|---|
加减号 | \pm |
|
乘(或笛卡尔积) | \times |
|
点乘 | \cdot |
|
除 | \div |
|
不等号 | \neq |
|
等价 | \equiv |
|
小于等于 | \leq |
|
大于等于 | \geq |
|
并集 | \cup |
|
交集 | \cap |
其它特殊字符
Markdown 代码 | 效果 |
---|---|
\forall |
|
\infty |
|
\emptyset |
|
\exists |
|
\nabla |
|
\bot |
|
\angle |
|
\because |
|
\therefore |
空格,换行
示例:
a \quad b
效果:
也可以用一个斜线表示空格(注意反斜线后面要有空格)。语法:
a \ b
效果:
换行
用两个反斜线表示换行(注意两个反斜线后面要有空格)。示例:
1 + 1 = 2
\\
2 + 2 = 4
效果:
注意:有些 Markdown 编辑器还未支持该语法,例如本博客使用的 MathJax。
我查了下文档,说是还未实现该功能,但是马上就会实现了。
花括号
示例:
c(u)=\begin{cases} \sqrt\frac{1}{N}, u=0\\ \sqrt\frac{2}{N}, u\neq0\end{cases}
效果:
希腊字母
Markdown 代码 | 效果(大写) | Markdown 代码 | 效果(小写) | |
---|---|---|---|---|
A |
A | \alpha |
||
B |
B | \beta |
||
\Gamma |
\gamma |
|||
\Delta |
\delta |
|||
E |
E | \epsilon |
||
\varepsilon |
||||
Z |
Z | \zeta |
||
H |
H | \eta |
||
\Theta |
\theta |
|||
I |
I | \iota |
||
K |
K | \kappa |
||
\Lambda |
\lambda |
|||
M |
M | \mu |
||
N |
N | \nu |
||
\Xi |
\xi |
|||
O |
O | \omicron |
||
\Pi |
\pi |
|||
P |
P | \rho |
||
\Sigma |
\sigma |
|||
T |
T | \tau |
||
\Upsilon |
\upsilon |
|||
\Phi |
\phi |
|||
\varphi |
||||
X |
X | \chi |
||
\Psi |
\psi |
|||
\Omega |
\omega |
矩阵
语法:
\begin{matrix}
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9
\end{matrix} \tag{1}
效果:
带括号的矩阵:
\left[
\begin{matrix}
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9
\end{matrix} \right]\tag{2}
效果:
Madoko
Markdown 和 Latex 代表了写作语言的两极:Markdown 追求极致的简洁,只有最少的格式控制;而 Latex 追求极致的可控,可以实现无限复杂的格式,也对语法有着严格的限制。
而这两极之间一直遗留着广阔的空白地带,是否有这样一种写作语言,在实现精美排版的同时,保持着足够的简洁和易用呢?Madoko 的便是为了这一目的而生。
Madoko 是一款开源的在线编辑器,当然你也可以通过 Node 的方式本地安装并运行。
GitHub 地址:https://github.com/koka-lang/madoko
中文翻译:https://github.com/HHpetra/MadokoReferenceChinese
发布注意事项
有些平台不支持 LaTex,那么如果想要发布带有 LaTex 公式的博客到这些平台,就得先处理下,例如截图。
为此,有人做了一个工具,将 Markdown 中的 LaTeX 转化为本地图片,这个工具叫 mdtex,开源在 GitHub:github.com/rreusser/mdtex-cli
具体步骤可以参考:Markdown 一次编辑全平台发布方案,支持 LaTeX 公式! - 知乎
我用的博客框架是 VuePress,使用了插件 markdown-it-mathjax3
后能正常渲染出结果(例如本文的数学公式都能正常显示),具体步骤可以参考我的另一篇博客:显示数学公式块
参考资料
107 页的PDF 文件:“一份不太简短的 LATEX2e 介绍” 3.1 节 数学公式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通