Showing
1 changed file
with
23 additions
and
12 deletions
@@ -61,23 +61,33 @@ class GptMarkdown extends StatelessWidget { | @@ -61,23 +61,33 @@ class GptMarkdown extends StatelessWidget { | ||
61 | final Widget Function( | 61 | final Widget Function( |
62 | BuildContext context, String text, String url, TextStyle style)? | 62 | BuildContext context, String text, String url, TextStyle style)? |
63 | linkBuilder; | 63 | linkBuilder; |
64 | + String _removeExtraLinesInsideBlockLatex(String text) { | ||
65 | + return text.replaceAllMapped( | ||
66 | + RegExp( | ||
67 | + r"\\\[(.*?)\\\]", | ||
68 | + multiLine: true, | ||
69 | + dotAll: true, | ||
70 | + ), (match) { | ||
71 | + String content = match[0] ?? ""; | ||
72 | + return content.replaceAllMapped(RegExp(r"\n[\n\ ]+"), (match) => "\n"); | ||
73 | + }); | ||
74 | + } | ||
64 | 75 | ||
65 | @override | 76 | @override |
66 | Widget build(BuildContext context) { | 77 | Widget build(BuildContext context) { |
67 | String tex = data.trim(); | 78 | String tex = data.trim(); |
79 | + tex = tex.replaceAllMapped( | ||
80 | + RegExp( | ||
81 | + r"(?<!\\)\$\$(.*?)(?<!\\)\$\$", | ||
82 | + dotAll: true, | ||
83 | + ), | ||
84 | + (match) => "\\[${match[1] ?? ""}\\]"); | ||
68 | if (!tex.contains(r"\(")) { | 85 | if (!tex.contains(r"\(")) { |
69 | - tex = tex | ||
70 | - .replaceAllMapped( | ||
71 | - RegExp( | ||
72 | - r"(?<!\\)\$\$(.*?)(?<!\\)\$\$", | ||
73 | - dotAll: true, | ||
74 | - ), | ||
75 | - (match) => "\\[${match[1] ?? ""}\\]") | ||
76 | - .replaceAllMapped( | ||
77 | - RegExp( | ||
78 | - r"(?<!\\)\$(.*?)(?<!\\)\$", | ||
79 | - ), | ||
80 | - (match) => "\\(${match[1] ?? ""}\\)"); | 86 | + tex = tex.replaceAllMapped( |
87 | + RegExp( | ||
88 | + r"(?<!\\)\$(.*?)(?<!\\)\$", | ||
89 | + ), | ||
90 | + (match) => "\\(${match[1] ?? ""}\\)"); | ||
81 | tex = tex.splitMapJoin( | 91 | tex = tex.splitMapJoin( |
82 | RegExp(r"\[.*?\]|\(.*?\)"), | 92 | RegExp(r"\[.*?\]|\(.*?\)"), |
83 | onNonMatch: (p0) { | 93 | onNonMatch: (p0) { |
@@ -85,6 +95,7 @@ class GptMarkdown extends StatelessWidget { | @@ -85,6 +95,7 @@ class GptMarkdown extends StatelessWidget { | ||
85 | }, | 95 | }, |
86 | ); | 96 | ); |
87 | } | 97 | } |
98 | + tex = _removeExtraLinesInsideBlockLatex(tex); | ||
88 | return ClipRRect( | 99 | return ClipRRect( |
89 | child: MdWidget( | 100 | child: MdWidget( |
90 | tex, | 101 | tex, |
-
Please register or login to post a comment