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}

效果:

\[\sqrt{2} \]

内联公式

如果你想输入的公式比较少,可以在一行内搞定,可以使用内联公式。首先在 Typora 中启用该设置:

启用后,建议重启下 Typora。

内联公式示例:

来输入一个根号2:$\sqrt{2}$

效果:来输入一个根号2:\(\sqrt{2}\)

接下来介绍一些常见的公式语法。

在线编辑器

如果你的 Markdown 编辑器不支持,但又想快速尝试下,可以使用 LaTex 在线编辑器,一搜一大堆,例如:https://www.latexlive.com

常用公式语法

这里列出部分公式语法,更多的请参考文末的“参考资料”。

常见运算符

作用 Markdown 代码 效果
上标 x^2 x2
下标 y_1 y1
分式 \frac{1}{2} \(\frac{1}{2}\)
省略号 \cdots \(\cdots\)
矢量 \vec{a} \(\vec{a}\)
积分 \int{x}dx \(\int{x}dx\)
积分(带范围) \int_{1}^{2}{x}dx \(\int_{1}^{2}{x}dx\)
极限 \lim{a+b} \(\lim{a+b}\)
极限(带范围) \lim_{n\rightarrow+\infty} \(\lim_{n\rightarrow+\infty}\)
累加 \sum{a} \(\sum{a}\)
累加(带范围) \sum_{n=1}^{100}{a_n} \(\sum_{n=1}^{100}{a_n}\)
累乘 \prod{x} \(\prod{x}\)
累乘(带范围) \prod_{n=1}^{99}{x_n} \(\prod_{n=1}^{99}{x_n}\)
向下取整 \lfloor x \rfloor \(\lfloor x \rfloor\)
向上取整 \lceil x \rceil \(\lceil x \rceil\)

三角函数

Markdown 代码 效果
\sin \(\sin\)
\cos \(\cos\)

其他符号以此类推,就不一一列举了

对数函数

Markdown 代码 效果
\ln2 \(\ln2\)
\log_28 \(\log_28\)
\lg10 \(\lg10\)

关系运算符

说明 Markdown 代码 效果
加减号 \pm \(\pm\)
乘(或笛卡尔积) \times \(\times\)
点乘 \cdot \(\cdot\)
\div \(\div\)
不等号 \neq \(\neq\)
等价 \equiv \(\equiv\)
小于等于 \leq \(\leq\)
大于等于 \geq \(\geq\)
并集 \cup \(\cup\)
交集 \cap \(\cap\)

其它特殊字符

Markdown 代码 效果
\forall \(\forall\)
\infty \(\infty\)
\emptyset \(\emptyset\)
\exists \(\exists\)
\nabla \(\nabla\)
\bot \(\bot\)
\angle \(\angle\)
\because \(\because\)
\therefore \(\therefore\)

空格,换行

示例:

a \quad b

效果:

\[a \quad b \]


也可以用一个斜线表示空格(注意反斜线后面要有空格)。语法:

a \  b

效果:

\[a \ b \]

换行

用两个反斜线表示换行(注意两个反斜线后面要有空格)。示例:

1 + 1 = 2
\\ 
2 + 2 = 4

效果:

\[1 + 1 = 2 \\ 2 + 2 = 4 \]

注意:有些 Markdown 编辑器还未支持该语法,例如本博客使用的 MathJax。

我查了下文档,说是还未实现该功能,但是马上就会实现了。

文档地址:Automatic Line Breaking — MathJax 3.2 documentation

花括号

示例:

c(u)=\begin{cases} \sqrt\frac{1}{N}, u=0\\ \sqrt\frac{2}{N}, u\neq0\end{cases}  

效果:

\[c(u)=\begin{cases} \sqrt\frac{1}{N}, u=0\\ \sqrt\frac{2}{N}, u\neq0\end{cases} \]

希腊字母

Markdown 代码 效果(大写) Markdown 代码 效果(小写)
A A \alpha \(\alpha\)
B B \beta \(\beta\)
\Gamma \(\Gamma\) \gamma \(\gamma\)
\Delta \(\Delta\) \delta \(\delta\)
E E \epsilon \(\epsilon\)
\varepsilon \(\varepsilon\)
Z Z \zeta \(\zeta\)
H H \eta \(\eta\)
\Theta \(\Theta\) \theta \(\theta\)
I I \iota \(\iota\)
K K \kappa \(\kappa\)
\Lambda \(\Lambda\) \lambda \(\lambda\)
M M \mu \(\mu\)
N N \nu \(\nu\)
\Xi \(\Xi\) \xi \(\xi\)
O O \omicron \(\omicron\)
\Pi \(\Pi\) \pi \(\pi\)
P P \rho \(\rho\)
\Sigma \(\Sigma\) \sigma \(\sigma\)
T T \tau \(\tau\)
\Upsilon \(\Upsilon\) \upsilon \(\upsilon\)
\Phi \(\Phi\) \phi \(\phi\)
\varphi \(\varphi\)
X X \chi \(\chi\)
\Psi \(\Psi\) \psi \(\psi\)
\Omega \(\Omega\) \omega \(\omega\)

矩阵

语法:

\begin{matrix}
1 & 2 & 3 \\
4 & 5 & 6 \\
7 & 8 & 9 
\end{matrix} \tag{1}

效果:

\[\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}

效果:

\[\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 节 数学公式

posted @ 2024-08-02 10:04  peterjxl  阅读(141)  评论(0编辑  收藏  举报