From 9074d15deb19064ce18428666b8d7d5fbdd8e586 Mon Sep 17 00:00:00 2001 From: Rick Ye Date: Tue, 8 Sep 2026 00:23:14 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20CJK=20=E5=8A=A0=E7=B2=97=E5=A4=B1?= =?UTF-8?q?=E6=95=88=EF=BC=88CommonMark=20flanking=20=E7=BC=BA=E9=99=B7?= =?UTF-8?q?=EF=BC=89+=20=E6=8B=89=E5=A4=A7=20Markdown=20=E6=AE=B5=E9=97=B4?= =?UTF-8?q?=E8=B7=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/desktop/package.json | 2 + .../src/renderer/src/components/Markdown.tsx | 38 +++++++++++-------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 5b7efc4..4fc471c 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -30,6 +30,8 @@ "react-dom": "19.2.8", "react-icons": "5.7.0", "react-markdown": "^10.1.0", + "remark-cjk-friendly": "^2.3.1", + "remark-cjk-friendly-gfm-strikethrough": "^2.3.1", "remark-gfm": "^4.0.1", "shadow-plugin": "2.1.0", "shiki": "^1.29.2", diff --git a/apps/desktop/src/renderer/src/components/Markdown.tsx b/apps/desktop/src/renderer/src/components/Markdown.tsx index 6337fbd..9272275 100644 --- a/apps/desktop/src/renderer/src/components/Markdown.tsx +++ b/apps/desktop/src/renderer/src/components/Markdown.tsx @@ -1,6 +1,8 @@ import { memo, useEffect, useState, type ReactNode } from 'react' import ReactMarkdown, { type Components } from 'react-markdown' import remarkGfm from 'remark-gfm' +import remarkCjkFriendly from 'remark-cjk-friendly' +import remarkCjkFriendlyGfmStrikethrough from 'remark-cjk-friendly-gfm-strikethrough' import { useLLMOutput, type BlockMatch, @@ -96,41 +98,41 @@ const LANG_ALIAS: Record = { const mdComponents: Components = { p({ children }) { - return

{children}

+ return

{children}

}, h1({ children }) { - return

{children}

+ return

{children}

}, h2({ children }) { - return

{children}

+ return

{children}

}, h3({ children }) { - return
{children}
+ return
{children}
}, h4({ children }) { - return
{children}
+ return
{children}
}, - h5: ({ children }) =>
{children}
, - h6: ({ children }) =>
{children}
, + h5: ({ children }) =>
{children}
, + h6: ({ children }) =>
{children}
, ul({ children }) { - return + return }, ol({ children }) { - return
    {children}
+ return
    {children}
}, li({ children }) { return
  • {children}
  • }, blockquote({ children }) { return ( -
    +
    {children}
    ) }, table({ children }) { return ( -
    +
    {children}
    ) @@ -169,7 +171,7 @@ const mdComponents: Components = { }, pre({ children }) { return ( -
    {children}
    +
    {children}
    ) }, a({ children, href }) { @@ -191,16 +193,22 @@ const mdComponents: Components = { return {children} }, img({ src, alt }) { - return {alt} + return {alt} }, hr() { - return
    + return
    } } const MarkdownComponent: LLMOutputComponent = ({ blockMatch }) => (
    - + {/* remark-cjk-friendly:CommonMark 的 flanking 规则不认 CJK——`**` 紧邻 + * 汉字与全角标点(如 出自**《书名》**)时无法开合加粗,解析层修复; + * 删除线同理(GFM ~~ 的伴随插件) */} + {blockMatch.output}