From ec00a40aefca73596ab76e3ebe3a8e1129b43688 Mon Sep 17 00:00:00 2001
From: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 27 Jan 2026 18:27:17 +0000
Subject: [PATCH] chore(deps): bump the production-dependencies group with 4 updates (#2289)
---
quartz/plugins/transformers/oxhugofm.ts | 53 ++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 46 insertions(+), 7 deletions(-)
diff --git a/quartz/plugins/transformers/oxhugofm.ts b/quartz/plugins/transformers/oxhugofm.ts
index 0d7b919..303566e 100644
--- a/quartz/plugins/transformers/oxhugofm.ts
+++ b/quartz/plugins/transformers/oxhugofm.ts
@@ -1,4 +1,6 @@
import { QuartzTransformerPlugin } from "../types"
+import rehypeRaw from "rehype-raw"
+import { PluggableList } from "unified"
export interface Options {
/** Replace {{ relref }} with quartz wikilinks []() */
@@ -9,6 +11,9 @@
removeHugoShortcode: boolean
/** Replace <figure/> with ![]() */
replaceFigureWithMdImg: boolean
+
+ /** Replace org latex fragments with $ and $$ */
+ replaceOrgLatex: boolean
}
const defaultOptions: Options = {
@@ -16,12 +21,27 @@
removePredefinedAnchor: true,
removeHugoShortcode: true,
replaceFigureWithMdImg: true,
+ replaceOrgLatex: true,
}
const relrefRegex = new RegExp(/\[([^\]]+)\]\(\{\{< relref "([^"]+)" >\}\}\)/, "g")
const predefinedHeadingIdRegex = new RegExp(/(.*) {#(?:.*)}/, "g")
const hugoShortcodeRegex = new RegExp(/{{(.*)}}/, "g")
const figureTagRegex = new RegExp(/< ?figure src="(.*)" ?>/, "g")
+// \\\\\( -> matches \\(
+// (.+?) -> Lazy match for capturing the equation
+// \\\\\) -> matches \\)
+const inlineLatexRegex = new RegExp(/\\\\\((.+?)\\\\\)/, "g")
+// (?:\\begin{equation}|\\\\\(|\\\\\[) -> start of equation
+// ([\s\S]*?) -> Matches the block equation
+// (?:\\\\\]|\\\\\)|\\end{equation}) -> end of equation
+const blockLatexRegex = new RegExp(
+ /(?:\\begin{equation}|\\\\\(|\\\\\[)([\s\S]*?)(?:\\\\\]|\\\\\)|\\end{equation})/,
+ "g",
+)
+// \$\$[\s\S]*?\$\$ -> Matches block equations
+// \$.*?\$ -> Matches inline equations
+const quartzLatexRegex = new RegExp(/\$\$[\s\S]*?\$\$|\$.*?\$/, "g")
/**
* ox-hugo is an org exporter backend that exports org files to hugo-compatible
@@ -29,16 +49,14 @@
* markdown to make it compatible with quartz but the list of changes applied it
* is not exhaustive.
* */
-export const OxHugoFlavouredMarkdown: QuartzTransformerPlugin<Partial<Options> | undefined> = (
- userOpts,
-) => {
+export const OxHugoFlavouredMarkdown: QuartzTransformerPlugin<Partial<Options>> = (userOpts) => {
const opts = { ...defaultOptions, ...userOpts }
return {
name: "OxHugoFlavouredMarkdown",
textTransform(_ctx, src) {
if (opts.wikilinks) {
src = src.toString()
- src = src.replaceAll(relrefRegex, (value, ...capture) => {
+ src = src.replaceAll(relrefRegex, (_value, ...capture) => {
const [text, link] = capture
return `[${text}](${link})`
})
@@ -46,7 +64,7 @@
if (opts.removePredefinedAnchor) {
src = src.toString()
- src = src.replaceAll(predefinedHeadingIdRegex, (value, ...capture) => {
+ src = src.replaceAll(predefinedHeadingIdRegex, (_value, ...capture) => {
const [headingText] = capture
return headingText
})
@@ -54,7 +72,7 @@
if (opts.removeHugoShortcode) {
src = src.toString()
- src = src.replaceAll(hugoShortcodeRegex, (value, ...capture) => {
+ src = src.replaceAll(hugoShortcodeRegex, (_value, ...capture) => {
const [scContent] = capture
return scContent
})
@@ -62,12 +80,33 @@
if (opts.replaceFigureWithMdImg) {
src = src.toString()
- src = src.replaceAll(figureTagRegex, (value, ...capture) => {
+ src = src.replaceAll(figureTagRegex, (_value, ...capture) => {
const [src] = capture
return ``
})
}
+
+ if (opts.replaceOrgLatex) {
+ src = src.toString()
+ src = src.replaceAll(inlineLatexRegex, (_value, ...capture) => {
+ const [eqn] = capture
+ return `$${eqn}$`
+ })
+ src = src.replaceAll(blockLatexRegex, (_value, ...capture) => {
+ const [eqn] = capture
+ return `$$${eqn}$$`
+ })
+
+ // ox-hugo escapes _ as \_
+ src = src.replaceAll(quartzLatexRegex, (value) => {
+ return value.replaceAll("\\_", "_")
+ })
+ }
return src
},
+ htmlPlugins() {
+ const plugins: PluggableList = [rehypeRaw]
+ return plugins
+ },
}
}
--
Gitblit v1.10.0