feat: custom global latex macros (closes #1325)
This commit is contained in:
		@@ -12,6 +12,7 @@ This plugin adds LaTeX support to Quartz. See [[features/Latex|Latex]] for more
 | 
				
			|||||||
This plugin accepts the following configuration options:
 | 
					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.
 | 
					- `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
 | 
					## API
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,10 +5,16 @@ import { QuartzTransformerPlugin } from "../types"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
interface Options {
 | 
					interface Options {
 | 
				
			||||||
  renderEngine: "katex" | "mathjax"
 | 
					  renderEngine: "katex" | "mathjax"
 | 
				
			||||||
 | 
					  customMacros: MacroType
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					interface MacroType {
 | 
				
			||||||
 | 
					  [key: string]: string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const Latex: QuartzTransformerPlugin<Options> = (opts?: Options) => {
 | 
					export const Latex: QuartzTransformerPlugin<Options> = (opts?: Options) => {
 | 
				
			||||||
  const engine = opts?.renderEngine ?? "katex"
 | 
					  const engine = opts?.renderEngine ?? "katex"
 | 
				
			||||||
 | 
					  const macros = opts?.customMacros ?? {}
 | 
				
			||||||
  return {
 | 
					  return {
 | 
				
			||||||
    name: "Latex",
 | 
					    name: "Latex",
 | 
				
			||||||
    markdownPlugins() {
 | 
					    markdownPlugins() {
 | 
				
			||||||
@@ -16,9 +22,9 @@ export const Latex: QuartzTransformerPlugin<Options> = (opts?: Options) => {
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
    htmlPlugins() {
 | 
					    htmlPlugins() {
 | 
				
			||||||
      if (engine === "katex") {
 | 
					      if (engine === "katex") {
 | 
				
			||||||
        return [[rehypeKatex, { output: "html" }]]
 | 
					        return [[rehypeKatex, { output: "html", macros }]]
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        return [rehypeMathjax]
 | 
					        return [[rehypeMathjax, { macros }]]
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    externalResources() {
 | 
					    externalResources() {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user