Jacky Zhao
2023-08-23 36548d59866ab3236677ff25af106b882c0694f6
fix: toc for cyrillic and other non-latin alphabets (closes #396)
2 files modified
7 ■■■■■ changed files
quartz/components/scripts/spa.inline.ts 2 ●●● patch | view | raw | blame | history
quartz/plugins/transformers/toc.ts 5 ●●●●● patch | view | raw | blame | history
quartz/components/scripts/spa.inline.ts
@@ -64,7 +64,7 @@
  // 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 })
quartz/plugins/transformers/toc.ts
@@ -2,7 +2,7 @@
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 @@
          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 @@
                  toc.push({
                    depth: node.depth,
                    text,
                    slug: slugAnchor(text),
                    slug: slugAnchor.slug(text),
                  })
                }
              })