feat: custom global latex macros (closes #1325)
| | |
| | | This plugin accepts the following configuration options: |
| | | |
| | | - `renderEngine`: the engine to use to render LaTeX equations. Can be `"katex"` for [KaTeX](https://katex.org/) or `"mathjax"` for [MathJax](https://www.mathjax.org/) [SVG rendering](https://docs.mathjax.org/en/latest/output/svg.html). Defaults to KaTeX. |
| | | - `customMacros`: custom macros for all LaTeX blocks. It takes the form of a key-value pair where the key is a new command name and the value is the expansion of the macro. For example: `{"\\R": "\\mathbb{R}"}` |
| | | |
| | | ## API |
| | | |
| | |
| | | |
| | | interface Options { |
| | | renderEngine: "katex" | "mathjax" |
| | | customMacros: MacroType |
| | | } |
| | | |
| | | interface MacroType { |
| | | [key: string]: string |
| | | } |
| | | |
| | | export const Latex: QuartzTransformerPlugin<Options> = (opts?: Options) => { |
| | | const engine = opts?.renderEngine ?? "katex" |
| | | const macros = opts?.customMacros ?? {} |
| | | return { |
| | | name: "Latex", |
| | | markdownPlugins() { |
| | |
| | | }, |
| | | htmlPlugins() { |
| | | if (engine === "katex") { |
| | | return [[rehypeKatex, { output: "html" }]] |
| | | return [[rehypeKatex, { output: "html", macros }]] |
| | | } else { |
| | | return [rehypeMathjax] |
| | | return [[rehypeMathjax, { macros }]] |
| | | } |
| | | }, |
| | | externalResources() { |