ai-error-assistant-mobile 0.0.14 → 0.0.15

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.
@@ -34,7 +34,7 @@
34
34
  v-if="questionStem.type === 'shortanswer' || questionStem.type === 'gapfilling'">
35
35
  <span style="vertical-align: inherit; display: inline-block">正确答案:</span>
36
36
  <span style="margin-left: 8px; display: inline-block; width: calc(100% - 82px); vertical-align: top;"
37
- v-html="questionStem.answer.join(',')"></span>
37
+ v-html="renderFormulas(questionStem.answer.join(','))"></span>
38
38
  </div>
39
39
  <div class="student-answer-part">
40
40
  <div class="check-content" style="width: 24px; margin-right: 16px">
@@ -57,7 +57,7 @@
57
57
  <!-- {{ item }}<span v-if="index !== questionStem.studentAnswer.length - 1">,</span>-->
58
58
  <!-- </span>-->
59
59
  <div v-if="questionStem.type === 'shortanswer' || questionStem.type === 'gapfilling'">
60
- <span style="margin-left: 8px" v-html="questionStem.studentAnswer.join(',')"></span>
60
+ <span style="margin-left: 8px" v-html="renderFormulas(questionStem.studentAnswer.join(','))"></span>
61
61
  </div>
62
62
  </div>
63
63
  </div>
@@ -209,43 +209,54 @@ export default {
209
209
  }
210
210
  },
211
211
  renderFormulas(text) {
212
- const {renderToString} = katex;
212
+ if (!text) return '';
213
+ // 如果整个文本包含 LaTeX 命令且没有定界符,整体包裹
214
+ const hasDelimiter = /\$|\\\(|\\\[/.test(text);
215
+ if (!hasDelimiter) {
216
+ text = text.replace(
217
+ /(\\(?: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,
218
+ (match) => `\\(${match}\\)`
219
+ );
220
+ }
221
+ const { renderToString } = katex;
213
222
  return text
214
- .replace(/\$\$(.*?)\$\$/gs, (match) => {
223
+ // 块级公式 $$...$$
224
+ .replace(/\$\$(.*?)\$\$/gs, (match, p1) => {
215
225
  try {
216
- // 渲染块级公式
217
- return renderToString(match.slice(2, -2), {displayMode: false});
218
- } catch (error) {
219
- console.error('Error rendering block formula:', error);
226
+ return renderToString(p1, { displayMode: true, throwOnError:
227
+ false });
228
+ } catch (e) {
229
+ console.error('Block formula error:', e);
220
230
  return match;
221
231
  }
222
232
  })
223
- .replace(/\$.*?\$/g, (match) => {
224
- match = match.replace(/<br>/g, '');
233
+ // 行内公式 $...$
234
+ .replace(/\$(.*?)\$/g, (match, p1) => {
225
235
  try {
226
- // 渲染行内公式
227
- return renderToString(match.slice(1, -1), {displayMode: false});
228
- } catch (error) {
229
- console.error('Error rendering inline formula:', error);
236
+ return renderToString(p1, { displayMode: false, throwOnError:
237
+ false });
238
+ } catch (e) {
239
+ console.error('Inline formula error:', e);
230
240
  return match;
231
241
  }
232
242
  })
233
- .replace(/\\\(.*?\\\)/g, (match) => {
243
+ // 行内公式 \( ... \)
244
+ .replace(/\\\((.*?)\\\)/g, (match, p1) => {
234
245
  try {
235
- // 渲染行内公式
236
- return renderToString(match.slice(2, -2), {displayMode: false});
237
- } catch (error) {
238
- console.error('Error rendering inline formula:', error);
246
+ return renderToString(p1, { displayMode: false, throwOnError:
247
+ false });
248
+ } catch (e) {
249
+ console.error('Inline formula error:', e);
239
250
  return match;
240
251
  }
241
252
  })
242
- .replace(/\\\[[\s\S]*?\\]/g, (match) => {
243
- match = match.replace(/<br>/g, '');
253
+ // 块级公式 \[ ... \]
254
+ .replace(/\\\[(.*?)\\\]/gs, (match, p1) => {
244
255
  try {
245
- // 渲染块级公式
246
- return renderToString(match.slice(2, -2), {displayMode: false});
247
- } catch (error) {
248
- console.error('Error rendering block formula:', error);
256
+ return renderToString(p1, { displayMode: true, throwOnError:
257
+ false });
258
+ } catch (e) {
259
+ console.error('Block formula error:', e);
249
260
  return match;
250
261
  }
251
262
  });
@@ -11535,8 +11535,8 @@ var component = normalizeComponent(
11535
11535
  )
11536
11536
 
11537
11537
  /* harmony default export */ var chat_tools = (component.exports);
11538
- ;// 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=d86a710c&scoped=true
11539
- var error_chatvue_type_template_id_d86a710c_scoped_true_render = function render() {
11538
+ ;// 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=53ecc787&scoped=true
11539
+ var error_chatvue_type_template_id_53ecc787_scoped_true_render = function render() {
11540
11540
  var _vm = this,
11541
11541
  _c = _vm._self._c;
11542
11542
  return _c('div', {
@@ -11602,7 +11602,7 @@ var error_chatvue_type_template_id_d86a710c_scoped_true_render = function render
11602
11602
  "vertical-align": "top"
11603
11603
  },
11604
11604
  domProps: {
11605
- "innerHTML": _vm._s(_vm.questionStem.answer.join(','))
11605
+ "innerHTML": _vm._s(_vm.renderFormulas(_vm.questionStem.answer.join(',')))
11606
11606
  }
11607
11607
  })]) : _vm._e(), _c('div', {
11608
11608
  staticClass: "student-answer-part"
@@ -11627,7 +11627,7 @@ var error_chatvue_type_template_id_d86a710c_scoped_true_render = function render
11627
11627
  "margin-left": "8px"
11628
11628
  },
11629
11629
  domProps: {
11630
- "innerHTML": _vm._s(_vm.questionStem.studentAnswer.join(','))
11630
+ "innerHTML": _vm._s(_vm.renderFormulas(_vm.questionStem.studentAnswer.join(',')))
11631
11631
  }
11632
11632
  })]) : _vm._e()])]), _c('div', {
11633
11633
  directives: [{
@@ -11681,7 +11681,7 @@ var error_chatvue_type_template_id_d86a710c_scoped_true_render = function render
11681
11681
  }
11682
11682
  })], 1)]);
11683
11683
  };
11684
- var error_chatvue_type_template_id_d86a710c_scoped_true_staticRenderFns = [function () {
11684
+ var error_chatvue_type_template_id_53ecc787_scoped_true_staticRenderFns = [function () {
11685
11685
  var _vm = this,
11686
11686
  _c = _vm._self._c;
11687
11687
  return _c('div', {
@@ -11700,7 +11700,7 @@ var error_chatvue_type_template_id_d86a710c_scoped_true_staticRenderFns = [funct
11700
11700
  })]);
11701
11701
  }];
11702
11702
 
11703
- ;// CONCATENATED MODULE: ./components/demo/src/error-chat.vue?vue&type=template&id=d86a710c&scoped=true
11703
+ ;// CONCATENATED MODULE: ./components/demo/src/error-chat.vue?vue&type=template&id=53ecc787&scoped=true
11704
11704
 
11705
11705
  ;// CONCATENATED MODULE: ./node_modules/katex/dist/katex.mjs
11706
11706
  /**
@@ -30107,49 +30107,61 @@ var katex = {
30107
30107
  }
30108
30108
  },
30109
30109
  renderFormulas(text) {
30110
+ if (!text) return '';
30111
+ // 如果整个文本包含 LaTeX 命令且没有定界符,整体包裹
30112
+ const hasDelimiter = /\$|\\\(|\\\[/.test(text);
30113
+ if (!hasDelimiter) {
30114
+ 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}\\)`);
30115
+ }
30110
30116
  const {
30111
30117
  renderToString
30112
30118
  } = katex;
30113
- return text.replace(/\$\$(.*?)\$\$/gs, match => {
30119
+ return text
30120
+ // 块级公式 $$...$$
30121
+ .replace(/\$\$(.*?)\$\$/gs, (match, p1) => {
30114
30122
  try {
30115
- // 渲染块级公式
30116
- return renderToString(match.slice(2, -2), {
30117
- displayMode: false
30123
+ return renderToString(p1, {
30124
+ displayMode: true,
30125
+ throwOnError: false
30118
30126
  });
30119
- } catch (error) {
30120
- console.error('Error rendering block formula:', error);
30127
+ } catch (e) {
30128
+ console.error('Block formula error:', e);
30121
30129
  return match;
30122
30130
  }
30123
- }).replace(/\$.*?\$/g, match => {
30124
- match = match.replace(/<br>/g, '');
30131
+ })
30132
+ // 行内公式 $...$
30133
+ .replace(/\$(.*?)\$/g, (match, p1) => {
30125
30134
  try {
30126
- // 渲染行内公式
30127
- return renderToString(match.slice(1, -1), {
30128
- displayMode: false
30135
+ return renderToString(p1, {
30136
+ displayMode: false,
30137
+ throwOnError: false
30129
30138
  });
30130
- } catch (error) {
30131
- console.error('Error rendering inline formula:', error);
30139
+ } catch (e) {
30140
+ console.error('Inline formula error:', e);
30132
30141
  return match;
30133
30142
  }
30134
- }).replace(/\\\(.*?\\\)/g, match => {
30143
+ })
30144
+ // 行内公式 \( ... \)
30145
+ .replace(/\\\((.*?)\\\)/g, (match, p1) => {
30135
30146
  try {
30136
- // 渲染行内公式
30137
- return renderToString(match.slice(2, -2), {
30138
- displayMode: false
30147
+ return renderToString(p1, {
30148
+ displayMode: false,
30149
+ throwOnError: false
30139
30150
  });
30140
- } catch (error) {
30141
- console.error('Error rendering inline formula:', error);
30151
+ } catch (e) {
30152
+ console.error('Inline formula error:', e);
30142
30153
  return match;
30143
30154
  }
30144
- }).replace(/\\\[[\s\S]*?\\]/g, match => {
30145
- match = match.replace(/<br>/g, '');
30155
+ })
30156
+ // 块级公式 \[ ... \]
30157
+ .replace(/\\\[(.*?)\\\]/gs, (match, p1) => {
30146
30158
  try {
30147
- // 渲染块级公式
30148
- return renderToString(match.slice(2, -2), {
30149
- displayMode: false
30159
+ return renderToString(p1, {
30160
+ displayMode: true,
30161
+ throwOnError: false
30150
30162
  });
30151
- } catch (error) {
30152
- console.error('Error rendering block formula:', error);
30163
+ } catch (e) {
30164
+ console.error('Block formula error:', e);
30153
30165
  return match;
30154
30166
  }
30155
30167
  });
@@ -30158,10 +30170,10 @@ var katex = {
30158
30170
  });
30159
30171
  ;// CONCATENATED MODULE: ./components/demo/src/error-chat.vue?vue&type=script&lang=js
30160
30172
  /* harmony default export */ var src_error_chatvue_type_script_lang_js = (error_chatvue_type_script_lang_js);
30161
- ;// 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=d86a710c&prod&lang=scss&scoped=true
30173
+ ;// 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=53ecc787&prod&lang=scss&scoped=true
30162
30174
  // extracted by mini-css-extract-plugin
30163
30175
 
30164
- ;// CONCATENATED MODULE: ./components/demo/src/error-chat.vue?vue&type=style&index=0&id=d86a710c&prod&lang=scss&scoped=true
30176
+ ;// CONCATENATED MODULE: ./components/demo/src/error-chat.vue?vue&type=style&index=0&id=53ecc787&prod&lang=scss&scoped=true
30165
30177
 
30166
30178
  ;// CONCATENATED MODULE: ./components/demo/src/error-chat.vue
30167
30179
 
@@ -30174,11 +30186,11 @@ var katex = {
30174
30186
 
30175
30187
  var error_chat_component = normalizeComponent(
30176
30188
  src_error_chatvue_type_script_lang_js,
30177
- error_chatvue_type_template_id_d86a710c_scoped_true_render,
30178
- error_chatvue_type_template_id_d86a710c_scoped_true_staticRenderFns,
30189
+ error_chatvue_type_template_id_53ecc787_scoped_true_render,
30190
+ error_chatvue_type_template_id_53ecc787_scoped_true_staticRenderFns,
30179
30191
  false,
30180
30192
  null,
30181
- "d86a710c",
30193
+ "53ecc787",
30182
30194
  null
30183
30195
 
30184
30196
  )