ai-error-assistant-pro 0.0.27 → 0.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -33,7 +33,7 @@
33
33
  style="padding-bottom: 24px"
34
34
  v-if="questionStem.type === 'shortanswer' || questionStem.type === 'gapfilling'">
35
35
  <span style="vertical-align: inherit; display: inline-block">正确答案:</span>
36
- <span style="margin-left: 8px; display: inline-block; width: calc(100% - 82px); vertical-align: top;" v-html="questionStem.answer.join(',')"></span>
36
+ <span style="margin-left: 8px; display: inline-block; width: calc(100% - 82px); vertical-align: top;" v-html="renderFormulas(questionStem.answer.join(','))"></span>
37
37
  </div>
38
38
  <div class="student-answer-part">
39
39
  <div class="check-content" style="width: 24px; margin-right: 16px">
@@ -56,7 +56,7 @@
56
56
  <!-- {{ item }}<span v-if="index !== questionStem.studentAnswer.length - 1">,</span>-->
57
57
  <!-- </span>-->
58
58
  <div v-if="questionStem.type === 'shortanswer' || questionStem.type === 'gapfilling'">
59
- <span style="margin-left: 8px" v-html="questionStem.studentAnswer.join(',')"></span>
59
+ <span style="margin-left: 8px" v-html="renderFormulas(questionStem.studentAnswer.join(','))"></span>
60
60
  </div>
61
61
  </div>
62
62
  </div>
@@ -200,48 +200,59 @@ export default {
200
200
  console.log(e);
201
201
  }
202
202
  },
203
- renderFormulas(text) {
204
- const {renderToString} = katex;
205
- return text
206
- .replace(/\$\$(.*?)\$\$/gs, (match) => {
207
- try {
208
- // 渲染块级公式
209
- return renderToString(match.slice(2, -2), {displayMode: false});
210
- } catch (error) {
211
- console.error('Error rendering block formula:', error);
212
- return match;
213
- }
214
- })
215
- .replace(/\$.*?\$/g, (match) => {
216
- match = match.replace(/<br>/g, '');
217
- try {
218
- // 渲染行内公式
219
- return renderToString(match.slice(1, -1), {displayMode: false});
220
- } catch (error) {
221
- console.error('Error rendering inline formula:', error);
222
- return match;
223
- }
224
- })
225
- .replace(/\\\(.*?\\\)/g, (match) => {
226
- try {
227
- // 渲染行内公式
228
- return renderToString(match.slice(2, -2), {displayMode: false});
229
- } catch (error) {
230
- console.error('Error rendering inline formula:', error);
231
- return match;
232
- }
233
- })
234
- .replace(/\\\[[\s\S]*?\\\]/g, (match) => {
235
- match = match.replace(/<br>/g, '');
236
- try {
237
- // 渲染块级公式
238
- return renderToString(match.slice(2, -2), {displayMode: false});
239
- } catch (error) {
240
- console.error('Error rendering block formula:', error);
241
- return match;
242
- }
243
- });
244
- },
203
+ renderFormulas(text) {
204
+ if (!text) return '';
205
+ // 如果整个文本包含 LaTeX 命令且没有定界符,整体包裹
206
+ const hasDelimiter = /\$|\\\(|\\\[/.test(text);
207
+ if (!hasDelimiter) {
208
+ text = text.replace(
209
+ /(\\(?:frac|sqrt|sum|int|cdot|times|geq|leq|neq|pm|div|alpha|beta|gamma|theta|pi|sigma|omega|infty|log|sin|cos|tan|left|right|overline|hat|vec|bar|lim|in|notin|supset|subseteq|ln|Gamma|to)(?:\{[^{}]*(?:\{[^{}]*(?:\{[^{}]*\}[^{}]*)*\}[^{}]*)*\}|[^\s{},。?!、;:\u4e00-\u9fa5])*)/g,
210
+ (match) => `\\(${match}\\)`
211
+ );
212
+ }
213
+ const { renderToString } = katex;
214
+ return text
215
+ // 块级公式 $$...$$
216
+ .replace(/\$\$(.*?)\$\$/gs, (match, p1) => {
217
+ try {
218
+ return renderToString(p1, { displayMode: true, throwOnError:
219
+ false });
220
+ } catch (e) {
221
+ console.error('Block formula error:', e);
222
+ return match;
223
+ }
224
+ })
225
+ // 行内公式 $...$
226
+ .replace(/\$(.*?)\$/g, (match, p1) => {
227
+ try {
228
+ return renderToString(p1, { displayMode: false, throwOnError:
229
+ false });
230
+ } catch (e) {
231
+ console.error('Inline formula error:', e);
232
+ return match;
233
+ }
234
+ })
235
+ // 行内公式 \( ... \)
236
+ .replace(/\\\((.*?)\\\)/g, (match, p1) => {
237
+ try {
238
+ return renderToString(p1, { displayMode: false, throwOnError:
239
+ false });
240
+ } catch (e) {
241
+ console.error('Inline formula error:', e);
242
+ return match;
243
+ }
244
+ })
245
+ // 块级公式 \[ ... \]
246
+ .replace(/\\\[(.*?)\\\]/gs, (match, p1) => {
247
+ try {
248
+ return renderToString(p1, { displayMode: true, throwOnError:
249
+ false });
250
+ } catch (e) {
251
+ console.error('Block formula error:', e);
252
+ return match;
253
+ }
254
+ });
255
+ },
245
256
  }
246
257
  }
247
258
  </script>
@@ -11500,8 +11500,8 @@ var component = normalizeComponent(
11500
11500
  )
11501
11501
 
11502
11502
  /* harmony default export */ var chat_tools = (component.exports);
11503
- ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/error-chat.vue?vue&type=template&id=cbff4420&scoped=true
11504
- var error_chatvue_type_template_id_cbff4420_scoped_true_render = function render() {
11503
+ ;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/templateLoader.js??ruleSet[1].rules[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/error-chat.vue?vue&type=template&id=7e23b569&scoped=true
11504
+ var error_chatvue_type_template_id_7e23b569_scoped_true_render = function render() {
11505
11505
  var _vm = this,
11506
11506
  _c = _vm._self._c;
11507
11507
  return _c('div', {
@@ -11571,7 +11571,7 @@ var error_chatvue_type_template_id_cbff4420_scoped_true_render = function render
11571
11571
  "vertical-align": "top"
11572
11572
  },
11573
11573
  domProps: {
11574
- "innerHTML": _vm._s(_vm.questionStem.answer.join(','))
11574
+ "innerHTML": _vm._s(_vm.renderFormulas(_vm.questionStem.answer.join(',')))
11575
11575
  }
11576
11576
  })]) : _vm._e(), _c('div', {
11577
11577
  staticClass: "student-answer-part"
@@ -11594,7 +11594,7 @@ var error_chatvue_type_template_id_cbff4420_scoped_true_render = function render
11594
11594
  "margin-left": "8px"
11595
11595
  },
11596
11596
  domProps: {
11597
- "innerHTML": _vm._s(_vm.questionStem.studentAnswer.join(','))
11597
+ "innerHTML": _vm._s(_vm.renderFormulas(_vm.questionStem.studentAnswer.join(',')))
11598
11598
  }
11599
11599
  })]) : _vm._e()])]), _c('div', {
11600
11600
  directives: [{
@@ -11649,7 +11649,7 @@ var error_chatvue_type_template_id_cbff4420_scoped_true_render = function render
11649
11649
  }
11650
11650
  })], 1)]);
11651
11651
  };
11652
- var error_chatvue_type_template_id_cbff4420_scoped_true_staticRenderFns = [function () {
11652
+ var error_chatvue_type_template_id_7e23b569_scoped_true_staticRenderFns = [function () {
11653
11653
  var _vm = this,
11654
11654
  _c = _vm._self._c;
11655
11655
  return _c('div', {
@@ -11669,7 +11669,7 @@ var error_chatvue_type_template_id_cbff4420_scoped_true_staticRenderFns = [funct
11669
11669
  })]);
11670
11670
  }];
11671
11671
 
11672
- ;// CONCATENATED MODULE: ./components/demo/src/error-chat.vue?vue&type=template&id=cbff4420&scoped=true
11672
+ ;// CONCATENATED MODULE: ./components/demo/src/error-chat.vue?vue&type=template&id=7e23b569&scoped=true
11673
11673
 
11674
11674
  ;// CONCATENATED MODULE: ./node_modules/katex/dist/katex.mjs
11675
11675
  /**
@@ -30070,49 +30070,61 @@ var katex = {
30070
30070
  }
30071
30071
  },
30072
30072
  renderFormulas(text) {
30073
+ if (!text) return '';
30074
+ // 如果整个文本包含 LaTeX 命令且没有定界符,整体包裹
30075
+ const hasDelimiter = /\$|\\\(|\\\[/.test(text);
30076
+ if (!hasDelimiter) {
30077
+ text = text.replace(/(\\(?:frac|sqrt|sum|int|cdot|times|geq|leq|neq|pm|div|alpha|beta|gamma|theta|pi|sigma|omega|infty|log|sin|cos|tan|left|right|overline|hat|vec|bar|lim|in|notin|supset|subseteq|ln|Gamma|to)(?:\{[^{}]*(?:\{[^{}]*(?:\{[^{}]*\}[^{}]*)*\}[^{}]*)*\}|[^\s{},。?!、;:\u4e00-\u9fa5])*)/g, match => `\\(${match}\\)`);
30078
+ }
30073
30079
  const {
30074
30080
  renderToString
30075
30081
  } = katex;
30076
- return text.replace(/\$\$(.*?)\$\$/gs, match => {
30082
+ return text
30083
+ // 块级公式 $$...$$
30084
+ .replace(/\$\$(.*?)\$\$/gs, (match, p1) => {
30077
30085
  try {
30078
- // 渲染块级公式
30079
- return renderToString(match.slice(2, -2), {
30080
- displayMode: false
30086
+ return renderToString(p1, {
30087
+ displayMode: true,
30088
+ throwOnError: false
30081
30089
  });
30082
- } catch (error) {
30083
- console.error('Error rendering block formula:', error);
30090
+ } catch (e) {
30091
+ console.error('Block formula error:', e);
30084
30092
  return match;
30085
30093
  }
30086
- }).replace(/\$.*?\$/g, match => {
30087
- match = match.replace(/<br>/g, '');
30094
+ })
30095
+ // 行内公式 $...$
30096
+ .replace(/\$(.*?)\$/g, (match, p1) => {
30088
30097
  try {
30089
- // 渲染行内公式
30090
- return renderToString(match.slice(1, -1), {
30091
- displayMode: false
30098
+ return renderToString(p1, {
30099
+ displayMode: false,
30100
+ throwOnError: false
30092
30101
  });
30093
- } catch (error) {
30094
- console.error('Error rendering inline formula:', error);
30102
+ } catch (e) {
30103
+ console.error('Inline formula error:', e);
30095
30104
  return match;
30096
30105
  }
30097
- }).replace(/\\\(.*?\\\)/g, match => {
30106
+ })
30107
+ // 行内公式 \( ... \)
30108
+ .replace(/\\\((.*?)\\\)/g, (match, p1) => {
30098
30109
  try {
30099
- // 渲染行内公式
30100
- return renderToString(match.slice(2, -2), {
30101
- displayMode: false
30110
+ return renderToString(p1, {
30111
+ displayMode: false,
30112
+ throwOnError: false
30102
30113
  });
30103
- } catch (error) {
30104
- console.error('Error rendering inline formula:', error);
30114
+ } catch (e) {
30115
+ console.error('Inline formula error:', e);
30105
30116
  return match;
30106
30117
  }
30107
- }).replace(/\\\[[\s\S]*?\\\]/g, match => {
30108
- match = match.replace(/<br>/g, '');
30118
+ })
30119
+ // 块级公式 \[ ... \]
30120
+ .replace(/\\\[(.*?)\\\]/gs, (match, p1) => {
30109
30121
  try {
30110
- // 渲染块级公式
30111
- return renderToString(match.slice(2, -2), {
30112
- displayMode: false
30122
+ return renderToString(p1, {
30123
+ displayMode: true,
30124
+ throwOnError: false
30113
30125
  });
30114
- } catch (error) {
30115
- console.error('Error rendering block formula:', error);
30126
+ } catch (e) {
30127
+ console.error('Block formula error:', e);
30116
30128
  return match;
30117
30129
  }
30118
30130
  });
@@ -30121,10 +30133,10 @@ var katex = {
30121
30133
  });
30122
30134
  ;// CONCATENATED MODULE: ./components/demo/src/error-chat.vue?vue&type=script&lang=js
30123
30135
  /* harmony default export */ var src_error_chatvue_type_script_lang_js = (error_chatvue_type_script_lang_js);
30124
- ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/error-chat.vue?vue&type=style&index=0&id=cbff4420&prod&lang=scss&scoped=true
30136
+ ;// CONCATENATED MODULE: ./node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!./node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!./node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!./node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!./node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!./node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./components/demo/src/error-chat.vue?vue&type=style&index=0&id=7e23b569&prod&lang=scss&scoped=true
30125
30137
  // extracted by mini-css-extract-plugin
30126
30138
 
30127
- ;// CONCATENATED MODULE: ./components/demo/src/error-chat.vue?vue&type=style&index=0&id=cbff4420&prod&lang=scss&scoped=true
30139
+ ;// CONCATENATED MODULE: ./components/demo/src/error-chat.vue?vue&type=style&index=0&id=7e23b569&prod&lang=scss&scoped=true
30128
30140
 
30129
30141
  ;// CONCATENATED MODULE: ./components/demo/src/error-chat.vue
30130
30142
 
@@ -30137,11 +30149,11 @@ var katex = {
30137
30149
 
30138
30150
  var error_chat_component = normalizeComponent(
30139
30151
  src_error_chatvue_type_script_lang_js,
30140
- error_chatvue_type_template_id_cbff4420_scoped_true_render,
30141
- error_chatvue_type_template_id_cbff4420_scoped_true_staticRenderFns,
30152
+ error_chatvue_type_template_id_7e23b569_scoped_true_render,
30153
+ error_chatvue_type_template_id_7e23b569_scoped_true_staticRenderFns,
30142
30154
  false,
30143
30155
  null,
30144
- "cbff4420",
30156
+ "7e23b569",
30145
30157
  null
30146
30158
 
30147
30159
  )