数学与方程#
Jupyter Book 使用 MathJax 在 HTML 书籍构建中排版数学公式。 这使您可以在在线内容中使用 LaTeX 风格的数学表达式。 本页面展示了控制这一功能的多种方法。
See also
有关方程编号更详细的信息, 请参阅 MathJax 方程编号文档。
Tip
默认情况下当前使用的是 MathJax 版本 2。 如果您大量使用数学公式,可能希望尝试使用版本 3,据称其加载速度提高了 60 - 80%:
sphinx:
config:
mathjax_path: https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js
有关详情,请参阅 Sphinx 文档。
行内数学#
要在 Markdown 单元格中插入行内数学公式,请使用 $ 符号。
例如,文本 $this_{is}^{inline}$ 将生成:\(this_{is}^{inline}\)。
数学块#
您也可以包含独立的数学方程块。这使您能够聚焦于更复杂或更长的方程,以及在页面中链接到它们。要使用块方程,请将方程用 $$ 或 \begin 语句包裹。
例如,
$$
\int_0^\infty \frac{x^3}{e^x-1}\,dx = \frac{\pi^4}{15}
$$
将生成:
LaTeX 风格的数学#
您可以通过 amsmath MyST 扩展启用解析 LaTeX 风格的数学块。通过将以下内容添加到 _config.yml 来启用它:
parse:
myst_enable_extensions:
# 不要忘记列出您想要启用的其他扩展,
# 包括那些默认启用的扩展!
- amsmath
一旦启用,您可以这样定义数学块:
\begin{gather*}
a_1=b_1+c_1\\
a_2=b_2+c_2-d_2+e_2
\end{gather*}
\begin{align}
a_{11}& =b_{11}&
a_{12}& =b_{12}\\
a_{21}& =b_{21}&
a_{22}& =b_{22}+c_{22}
\end{align}
这将生成:
See also
MyST 指南中关于 美元数学语法、LaTeX 数学语法 以及 MyST-Parser 如何与 MathJax 协同工作。
对于高级使用,还请参阅如何 定义 MathJax TeX 宏。
方程编号#
如果您希望对方程进行编号以便稍后引用,请使用 数学指令。 它看起来像这样:
```{math}
:label: my_label
my_math
```
例如,以下代码:
```{math}
:label: my_label
w_{t+1} = (1 + r_{t+1}) s(w_t) + y_{t+1}
```
将生成
或者,您可以使用带有前缀标签的美元数学语法:
$$
w_{t+1} = (1 + r_{t+1}) s(w_t) + y_{t+1}
$$ (my_other_label)
这将生成
Note
标签不能以整数开头,否则它们将无法被引用,并且在引用时会抛出警告信息。例如,:label: 1 和 :label: 1eq 无法被引用。
链接到方程#
如果您为方程创建了标签,您可以从文本中(甚至跨页面)链接到它。
您可以通过使用 {eq} 角色引用您提供的标签来引用方程。例如:
- 链接到一个方程指令:{eq}`my_label`
- 链接到一个美元数学块:{eq}`my_other_label`
结果为
Note
LaTeX 环境中的 \labels 目前无法被识别,因此不能被引用。
我们希望在未来的更新中实现这一点(参见 executablebooks/MyST-Parser#202)!