diff --git a/quartz/components/scripts/spa.inline.ts b/quartz/components/scripts/spa.inline.ts index d91ca78c..bd226083 100644 --- a/quartz/components/scripts/spa.inline.ts +++ b/quartz/components/scripts/spa.inline.ts @@ -64,7 +64,7 @@ async function navigate(url: URL, isBack: boolean = false) { // scroll into place and add history if (!isBack) { if (url.hash) { - const el = document.getElementById(url.hash.substring(1)) + const el = document.getElementById(decodeURIComponent(url.hash.substring(1))) el?.scrollIntoView() } else { window.scrollTo({ top: 0 }) diff --git a/quartz/plugins/transformers/toc.ts b/quartz/plugins/transformers/toc.ts index 87031a9d..be006f61 100644 --- a/quartz/plugins/transformers/toc.ts +++ b/quartz/plugins/transformers/toc.ts @@ -2,7 +2,7 @@ import { QuartzTransformerPlugin } from "../types" import { Root } from "mdast" import { visit } from "unist-util-visit" import { toString } from "mdast-util-to-string" -import { slug as slugAnchor } from "github-slugger" +import Slugger from "github-slugger" export interface Options { maxDepth: 1 | 2 | 3 | 4 | 5 | 6 @@ -34,6 +34,7 @@ export const TableOfContents: QuartzTransformerPlugin | undefin return async (tree: Root, file) => { const display = file.data.frontmatter?.enableToc ?? opts.showByDefault if (display) { + const slugAnchor = new Slugger() const toc: TocEntry[] = [] let highestDepth: number = opts.maxDepth visit(tree, "heading", (node) => { @@ -43,7 +44,7 @@ export const TableOfContents: QuartzTransformerPlugin | undefin toc.push({ depth: node.depth, text, - slug: slugAnchor(text), + slug: slugAnchor.slug(text), }) } })