From 36548d59866ab3236677ff25af106b882c0694f6 Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Tue, 22 Aug 2023 22:41:50 -0700 Subject: [PATCH] fix: toc for cyrillic and other non-latin alphabets (closes #396) --- quartz/components/scripts/spa.inline.ts | 2 +- quartz/plugins/transformers/toc.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/quartz/components/scripts/spa.inline.ts b/quartz/components/scripts/spa.inline.ts index d91ca78..bd22608 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 87031a9..be006f6 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), }) } })