数学¶
MathJax和KaTeX是两个流行的库,用于显示 浏览器中的数学内容。尽管这两个库提供了类似的功能 功能,它们使用不同的语法并具有不同的配置 选项。本文档网站提供有关如何集成它们的信息 轻松使用MkDocs材料。
配置¶
以下配置支持渲染块和 使用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.startup.output.clearCache()
MathJax.typesetClear()
MathJax.texReset()
MathJax.typesetPromise()
})
- This integrates MathJax with instant loading.
请参阅其他配置选项:
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 }
],
})
})
- This integrates KaTeX with instant loading.
使用¶
使用块语法¶
块必须用`#!乳胶\(\(。..\)\)或#!单独使用乳胶 线:
使用内联块语法¶
Inline blocks must be enclosed in $...$
or \(...\)
:
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则提供 以牺牲速度为代价,提供更多功能和更好的兼容性。选择 两者之间的差异在很大程度上取决于你的具体需求和限制。