Jacky Zhao
2024-08-09 9acaa1c8ac8c8afd3fa08d3b1f58a60006fcfc6f
feat: custom global latex macros (closes #1325)
2 files modified
11 ■■■■ changed files
docs/plugins/Latex.md 1 ●●●● patch | view | raw | blame | history
quartz/plugins/transformers/latex.ts 10 ●●●● patch | view | raw | blame | history
docs/plugins/Latex.md
@@ -12,6 +12,7 @@
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
quartz/plugins/transformers/latex.ts
@@ -5,10 +5,16 @@
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() {
@@ -16,9 +22,9 @@
    },
    htmlPlugins() {
      if (engine === "katex") {
        return [[rehypeKatex, { output: "html" }]]
        return [[rehypeKatex, { output: "html", macros }]]
      } else {
        return [rehypeMathjax]
        return [[rehypeMathjax, { macros }]]
      }
    },
    externalResources() {