@mdit/plugin-katex
使用 KaTeX 呈现数学表达式的插件。
注
这个插件基于 @mdit/plugin-tex。
使用
import { katex } from "@mdit/plugin-katex";
import MarkdownIt from "markdown-it";
const mdIt = new MarkdownIt().use(katex);
mdIt.render("$E=mc^2$");我们也有一个 @mdit/plugin-katex-slim 包,其中 katex 是可选对等依赖。
语法
语法取决于 delimiters 选项:
- 默认 (
"dollars"): 内联使用$tex expression$,块级使用$$tex expression$$。 - LaTeX 风格 (
"brackets"): 内联使用\(tex expression\),块级使用\[tex expression\]。 - 两种语法 (
"all"): 同时支持美元符号和括号语法。
样式
你应该自己从 katex 包或 CDN 导入 katex/dist/katex.min.css。
转义
你可以使用
\来转义$\[和\(:Euler’s identity \$e^{i\pi}+1=0$会被渲染为
Euler’s identity $e^{i\pi}+1=0$
选项
此插件扩展了 KaTeX 选项。可用选项包括:
delimiters
"brackets" | "dollars" | "all"默认值
"dollars"启用的数学分隔符语法。
"brackets": 使用\(...\)表示内联数学,使用\[...\]表示显示模式数学(LaTeX 风格)。"dollars": 使用$...$表示内联数学,使用$$...$$表示显示模式数学(常见 Markdown 风格)。"all": 启用括号和美元符号两种语法。
mathFence
boolean默认值
false是否将解析的数学语言 fence 块转换为显示模式数学。
allowInlineWithSpace
boolean默认值
false是否允许两端带空格的内联数学。不建议将此设置为 true,因为它很可能会破坏 $ 的默认使用。注意:内容中带空格的字面 $(如 $\text{a $ b}$)此时会被当作闭合 $,从而提前结束表达式。
logger
KatexLoggertype KatexLogger<MarkdownItEnv = unknown> = (
errorCode:
| "unknownSymbol"
| "unicodeTextInMathMode"
| "mathVsTextUnits"
| "commentAtEnd"
| "htmlExtension"
| "newLineInDisplayMode",
errorMsg: string,
token: Token | undefined,
env: MarkdownItEnv,
) => "error" | "warn" | "ignore" | boolean | undefined;错误日志记录器函数。
transformer
(content: string, displayMode: boolean) => string输出内容的转换器函数。
示例
Euler’s identity
示例
Euler’s identity $e^{i\pi}+1=0$ is a beautiful formula in $\mathbb{R}^2$.
$$
\frac {\partial^r} {\partial \omega^r} \left(\frac {y^{\omega}} {\omega}\right)
= \left(\frac {y^{\omega}} {\omega}\right) \left\{(\log y)^r + \sum_{i=1}^r \frac {(-1)^i r \cdots (r-i+1) (\log y)^{r-i}} {\omega^i} \right\}
$$mhchem 扩展
如果你想加载 mhchem 扩展,你应该导入 @mdit/plugin-katex/mhchem:
import { katex } from "@mdit/plugin-katex";
import "@mdit/plugin-katex/mhchem";支持列表
Cookbook
与上游参考实现的完整对比见对比报告。