数学
MathJax 和 KaTeX 是两个在浏览器中显示数学内容的流行库。尽管这两个库提供了类似的功能,但它们使用的语法不同,并且有不同的配置选项。本文档网站提供了如何轻松地将它们与 MkDocs 的 Material 集成的信息。
配置
以下配置启用了使用 MathJax 和 KaTeX 渲染块和内联块等式的支持。
MathJax
MathJax 是一个强大且灵活的库,支持多种输入格式,如 LaTeX、MathML、AsciiMath,以及各种输出格式,如 HTML、SVG、MathML。要在项目中使用 MathJax,将以下行添加到 mkdocs.yml。
window.MathJax = {
tex: {
inlineMath: [["\\(", "\\)"]],
displayMath: [["\\[", "\\]"]],
processEscapes: true,
processEnvironments: true
},
options: {
ignoreHtmlClass: ".*|",
processHtmlClass: "arithmatex"
}
};
document$.subscribe(() => { // (1)!
MathJax.typesetPromise()
})
- 这将 MathJax 与 即时加载 集成。
查看额外的配置选项:
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 }
],
})
})
- 这将 KaTeX 与 即时加载 集成。
extra_javascript:
- javascripts/katex.js
- https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.7/katex.min.js # (1)!
- https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.7/contrib/auto-render.min.js
extra_css:
- https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.7/katex.min.css
- 或者,你可以通过覆盖 HTML 文件来通过
script标签添加这些 JavaScript 和 CSS 文件。
使用
使用块语法
块必须在 $...$ 或 \[...\] 中单独一行封闭:
使用内联块语法
内联块必须在 $...$ 或 \(...\) 中封闭:
The homomorphism $f$ is injective if and only if its kernel is only the
singleton set $e_G$, because otherwise $\exists a,b\in G$ with $a\neq b$ such
that $f(a)=f(b)$.
The homomorphism \(f\) is injective if and only if its kernel is only the singleton set \(e_G\), because otherwise \(\exists a,b\in G\) with \(a\neq b\) such that \(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 则以牺牲速度来提供更多的功能和更好的兼容性。两者之间的选择将在很大程度上取决于你的特定需求和约束。