From cad0ac522108bec11acc101924e22d043f6ddeee Mon Sep 17 00:00:00 2001 From: tianyaxiang <tianyaxiang@qq.com> Date: Fri, 28 Feb 2025 11:40:40 +0800 Subject: [PATCH] =?UTF-8?q?add=20=20=E6=B7=BB=E5=8A=A0=E8=84=9A=E6=B3=A8?= =?UTF-8?q?=E6=94=AF=E6=8C=81=20footnote?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/markdown/parser.ts | 7 ------- src/lib/markdown/renderer.ts | 7 +++++++ src/types/marked.d.ts | 7 +++++++ 3 files changed, 14 insertions(+), 7 deletions(-) create mode 100644 src/types/marked.d.ts diff --git a/src/lib/markdown/parser.ts b/src/lib/markdown/parser.ts index ff85f8b..1f93a5f 100644 --- a/src/lib/markdown/parser.ts +++ b/src/lib/markdown/parser.ts @@ -58,13 +58,6 @@ export class MarkdownParser { return token as any } return undefined - }, - renderer(token: any) { - const footnoteStyle = (options?.inline?.footnote || {}) - const styleStr = Object.entries(footnoteStyle) - .map(([key, value]) => `${key}:${value}`) - .join(';') - return `<sup${styleStr ? ` style="${styleStr}"` : ''}><a href="#fn-${token.text}">[${token.text}]</a></sup>` } }] }) diff --git a/src/lib/markdown/renderer.ts b/src/lib/markdown/renderer.ts index e03c54b..50d075a 100644 --- a/src/lib/markdown/renderer.ts +++ b/src/lib/markdown/renderer.ts @@ -370,6 +370,13 @@ export class MarkdownRenderer { const styleStr = cssPropertiesToString(delStyle) return `<del${styleStr ? ` style="${styleStr}"` : ''}>${text}</del>` } + + // 添加脚注支持 + this.renderer.footnote = (token: any) => { + const footnoteStyle = (this.options.inline?.footnote || {}) + const styleStr = cssPropertiesToString(footnoteStyle) + return `<sup${styleStr ? ` style="${styleStr}"` : ''}><a href="#fn-${token.text}">[${token.text}]</a></sup>` + } } public getRenderer(): typeof marked.Renderer.prototype { diff --git a/src/types/marked.d.ts b/src/types/marked.d.ts new file mode 100644 index 0000000..74b0cf5 --- /dev/null +++ b/src/types/marked.d.ts @@ -0,0 +1,7 @@ +import { marked } from 'marked'; + +declare module 'marked' { + interface RendererThis { + footnote: (token: any) => string; + } +}