Skip to content

数学

MathJaxKaTeX 是两种流行的库,用于在浏览器中显示数学内容。尽管这两个库提供类似的功能,但它们使用不同的语法并具有不同的配置选项。此文档网站提供了如何轻松将它们与 Material for MkDocs 集成的信息。

配置

以下配置启用使用 MathJaxKaTeX 渲染块和行内方程的支持。

MathJax

MathJax 是一个强大而灵活的库,支持多种输入格式,如 LaTeXMathMLAsciiMath,以及各种输出格式,如 HTML、SVG、MathML。要在您的项目中使用 MathJax,请将以下行添加到您的 mkdocs.yml

window.MathJax = {
  tex: {
    inlineMath: [["\\(", "\\)"]],
    displayMath: [["\\[", "\\]"]],
    processEscapes: true,
    processEnvironments: true
  },
  options: {
    ignoreHtmlClass: ".*|",
    processHtmlClass: "arithmatex"
  }
};

document$.subscribe(() => { // (1)!
  MathJax.startup.output.clearCache()
  MathJax.typesetClear()
  MathJax.texReset()
  MathJax.typesetPromise()
})
  1. 这将 MathJax 与 即时加载 集成。
markdown_extensions:
  - pymdownx.arithmatex:
      generic: true

extra_javascript:
  - javascripts/mathjax.js
  - https://unpkg.com/mathjax@3/es5/tex-mml-chtml.js

请参阅其他配置选项:

KaTeX

KaTeX 是一个轻量级库,专注于速度和简单性。它支持 LaTeX 语法的一个子集,并可以将数学渲染为 HTML 和 SVG。要在您的项目中使用 KaTeX,请将以下行添加到您的 mkdocs.yml

document$.subscribe(({ body }) => { // (1)!
  renderMathInElement(body, {
    delimiters: [
      { left: "$$",  right: "$$",  display: true },
      { left: "$",   right: "$",   display: false },
      { left: "\\(", right: "\\)", display: false },
      { left: "\\[", right: "\\]", display: true }
    ],
  })
})
  1. 这将 KaTeX 与 即时加载 集成。
markdown_extensions:
  - pymdownx.arithmatex:
      generic: true

extra_javascript:
  - javascripts/katex.js
  - https://unpkg.com/katex@0/dist/katex.min.js
  - https://unpkg.com/katex@0/dist/contrib/auto-render.min.js

extra_css:
  - https://unpkg.com/katex@0/dist/katex.min.css

使用

使用块语法

块必须用 $$...$$\[...\] 包围,并单独放在一行上:

块语法
$$
\cos x=\sum_{k=0}^{\infty}\frac{(-1)^k}{(2k)!}x^{2k}
$$
\[ \cos x=\sum_{k=0}^{\infty}\frac{(-1)^k}{(2k)!}x^{2k} \]

使用行内块语法

行内块必须用 $...$\(...\) 包围:

行内语法
同态 $f$ 当且仅当其核仅为单例集 $e_G$ 时是单射,因为否则 $\exists a,b\in G$ 使得 $a\neq b$$f(a)=f(b)$

同态 \(f\) 当且仅当其核仅为单例集 \(e_G\) 时是单射,因为否则 \(\exists a,b\in G\) 使得 \(a\neq b\)\(f(a)=f(b)\)

比较 MathJax 和 KaTeX

在选择 MathJax 和 KaTeX 之间时,有几个关键因素需要考虑:

  • 速度: KaTeX 通常比 MathJax 更快。如果您的网站需要快速渲染大量复杂方程,KaTeX 可能是更好的选择。

  • 语法支持: MathJax 支持更广泛的 LaTeX 命令,并可以处理多种数学标记语言(如 AsciiMath 和 MathML)。如果您需要高级的 LaTeX 特性,MathJax 可能更合适。

  • 输出格式: 两个库都支持 HTML 和 SVG 输出。然而,MathJax 还提供 MathML 输出,这对于可访问性至关重要,因为它可以被屏幕阅读器读取。

  • 可配置性: MathJax 提供了一系列配置选项,允许更精确地控制其行为。如果您有特定的渲染要求,MathJax 可能是一个更灵活的选择。

  • 浏览器支持: 虽然两个库在现代浏览器中都表现良好,但 MathJax 对旧浏览器的兼容性更广泛。如果您的受众使用各种浏览器,包括旧版浏览器,MathJax 可能是一个更安全的选择。

总之,KaTeX 在速度和简单性方面表现出色,而 MathJax 提供了更多功能和更好的兼容性,但速度较慢。两者之间的选择在很大程度上取决于您的具体需求和限制。