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;
+  }
+}