lookatstudy-mobile 0.18.0 → 0.19.0

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.
Files changed (129) hide show
  1. package/package.json +1 -1
  2. package/server.cjs +160 -1
  3. package/web/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  4. package/web/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  5. package/web/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  6. package/web/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  7. package/web/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  8. package/web/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  9. package/web/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  10. package/web/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  11. package/web/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  12. package/web/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  13. package/web/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  14. package/web/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  15. package/web/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  16. package/web/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  17. package/web/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  18. package/web/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  19. package/web/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  20. package/web/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  21. package/web/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  22. package/web/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  23. package/web/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  24. package/web/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  25. package/web/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  26. package/web/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  27. package/web/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  28. package/web/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  29. package/web/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  30. package/web/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  31. package/web/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  32. package/web/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  33. package/web/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  34. package/web/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  35. package/web/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  36. package/web/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  37. package/web/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  38. package/web/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  39. package/web/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  40. package/web/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  41. package/web/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  42. package/web/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  43. package/web/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  44. package/web/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  45. package/web/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  46. package/web/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  47. package/web/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  48. package/web/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  49. package/web/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  50. package/web/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  51. package/web/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  52. package/web/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  53. package/web/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  54. package/web/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  55. package/web/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  56. package/web/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  57. package/web/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  58. package/web/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  59. package/web/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  60. package/web/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  61. package/web/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  62. package/web/assets/{abnfDiagram-N423BO3Z-CU2Rg7X-.js → abnfDiagram-N423BO3Z-DRLqlsQe.js} +1 -1
  63. package/web/assets/{arc-CVHcrwtq.js → arc-DX37qc14.js} +1 -1
  64. package/web/assets/{architectureDiagram-T3A2C74G-CbOpSoqA.js → architectureDiagram-T3A2C74G-4mH-M23W.js} +1 -1
  65. package/web/assets/{blockDiagram-VBNYF7ZC-DkENfYJJ.js → blockDiagram-VBNYF7ZC-CfFl91r9.js} +1 -1
  66. package/web/assets/{c4Diagram-5PPSVZJV-D2nKbUxh.js → c4Diagram-5PPSVZJV-CoYqbpkG.js} +1 -1
  67. package/web/assets/channel-DwTlw7UU.js +1 -0
  68. package/web/assets/{chunk-2GRJ4B5K-B2LBmawX.js → chunk-2GRJ4B5K-DdZFJzXx.js} +1 -1
  69. package/web/assets/{chunk-2Q5K7J3B-ByZtx99c.js → chunk-2Q5K7J3B-CjvT22rq.js} +1 -1
  70. package/web/assets/{chunk-5RXB4S5H-b6PGx0ql.js → chunk-5RXB4S5H-BO3dLHxP.js} +1 -1
  71. package/web/assets/{chunk-5VM5RSS4-wmKKoEHl.js → chunk-5VM5RSS4-BRWuBMF-.js} +1 -1
  72. package/web/assets/{chunk-6Q2QTUOP-CZ89fwLd.js → chunk-6Q2QTUOP-BBL9yZr5.js} +1 -1
  73. package/web/assets/{chunk-GF5L2VYU-3EIIkl6Y.js → chunk-GF5L2VYU-BzgRNoMK.js} +1 -1
  74. package/web/assets/{chunk-JWPE2WC7-CdCWYrp8.js → chunk-JWPE2WC7-Rx7velok.js} +1 -1
  75. package/web/assets/{chunk-KBJHAD2P-CmZTgHqr.js → chunk-KBJHAD2P-BUmqDQFS.js} +1 -1
  76. package/web/assets/{chunk-RYQCIY6F-DfyARx_z.js → chunk-RYQCIY6F-DiWSKlNj.js} +1 -1
  77. package/web/assets/{chunk-XXDRQBXY-DIoEGjYu.js → chunk-XXDRQBXY-BaIS0itG.js} +1 -1
  78. package/web/assets/classDiagram-JCYQIIEL-CoMu7USw.js +1 -0
  79. package/web/assets/classDiagram-v2-OCEON4UE-CoMu7USw.js +1 -0
  80. package/web/assets/{cose-bilkent-JH36ORCC-BktEcSRI.js → cose-bilkent-JH36ORCC-BbQclxlG.js} +1 -1
  81. package/web/assets/{cynefin-VYW2F7L2-sXHUKhTr.js → cynefin-VYW2F7L2-BoAEtYBt.js} +1 -1
  82. package/web/assets/{cynefinDiagram-MW4NZA55-CQvZqGMF.js → cynefinDiagram-MW4NZA55-1NTeoXpW.js} +1 -1
  83. package/web/assets/{dagre-VZM6K2ZE-BgVOc66g.js → dagre-VZM6K2ZE-D1IJUP3L.js} +1 -1
  84. package/web/assets/{diagram-7IWD3JNH-CqXnEFCF.js → diagram-7IWD3JNH-Bq4zahZs.js} +1 -1
  85. package/web/assets/{diagram-B4RE2ZJO-CbG6ewsb.js → diagram-B4RE2ZJO-DwR-n08L.js} +1 -1
  86. package/web/assets/{diagram-LBJQPF4R-qCVZtiwb.js → diagram-LBJQPF4R-x8ddz6fv.js} +1 -1
  87. package/web/assets/{diagram-Q27KOJAE-fRbvC_4J.js → diagram-Q27KOJAE-BQvPuANj.js} +1 -1
  88. package/web/assets/{diagram-UB23O5K3-DYruB-zm.js → diagram-UB23O5K3-2HRRnPaM.js} +1 -1
  89. package/web/assets/{ebnfDiagram-BXEA7PRR-BKbJqSDg.js → ebnfDiagram-BXEA7PRR-C6w-Hol8.js} +1 -1
  90. package/web/assets/{erDiagram-JOGREHBK-anDPN9Fg.js → erDiagram-JOGREHBK-D0B9HX21.js} +1 -1
  91. package/web/assets/{flowDiagram-UKHOOZJN-DlMRxaQ8.js → flowDiagram-UKHOOZJN-BAFPos1j.js} +1 -1
  92. package/web/assets/{ganttDiagram-PKOTCBZU-BoCCJylo.js → ganttDiagram-PKOTCBZU-cEfBlMbu.js} +1 -1
  93. package/web/assets/{gitGraphDiagram-DS77QQ5N-D37HEJEv.js → gitGraphDiagram-DS77QQ5N-kEgMAveq.js} +1 -1
  94. package/web/assets/{index-CeFnA9sR.js → index-DFfbtrtQ.js} +10 -10
  95. package/web/assets/{infoDiagram-6WML65LV-Cp2uwsRp.js → infoDiagram-6WML65LV-B3O-sBT9.js} +1 -1
  96. package/web/assets/{ishikawaDiagram-WSZJBQD7-IDCvF8oq.js → ishikawaDiagram-WSZJBQD7-Lltvy9NV.js} +1 -1
  97. package/web/assets/{journeyDiagram-NVQOT4AX-CqJjuMRj.js → journeyDiagram-NVQOT4AX-CoTpdbQG.js} +1 -1
  98. package/web/assets/{kanban-definition-27J2QSJJ-Bzy4l8Im.js → kanban-definition-27J2QSJJ-C6MlEhKf.js} +1 -1
  99. package/web/assets/{linear-BYt2jke2.js → linear-BOCC78Hx.js} +1 -1
  100. package/web/assets/main-BXa7WYYr.css +1 -0
  101. package/web/assets/main-_hK--hbF.js +792 -0
  102. package/web/assets/{mermaid.core-ChBcV6rX.js → mermaid.core-BnzH2M4g.js} +4 -4
  103. package/web/assets/{mindmap-definition-FAOFIHXS-BiQCF2qx.js → mindmap-definition-FAOFIHXS-2aXmimCX.js} +1 -1
  104. package/web/assets/{pegDiagram-VL7TDLO6-JrAhM2Rh.js → pegDiagram-VL7TDLO6-BUgOGs18.js} +1 -1
  105. package/web/assets/{pet-f5Q8AEiU.js → pet-a4xGZJ4o.js} +1 -1
  106. package/web/assets/{pieDiagram-7S7Q4E2Y-DNB9KI82.js → pieDiagram-7S7Q4E2Y-QH3MSwJC.js} +1 -1
  107. package/web/assets/{quadrantDiagram-CIZ2JOQS-D9CQH6qH.js → quadrantDiagram-CIZ2JOQS-BHgzjRDJ.js} +1 -1
  108. package/web/assets/{railroadDiagram-AXF67PYL-GRAK-BbS.js → railroadDiagram-AXF67PYL-eT-6KI97.js} +1 -1
  109. package/web/assets/{requirementDiagram-LRYGKXZP-CTFmkmvv.js → requirementDiagram-LRYGKXZP-SCqCciaJ.js} +1 -1
  110. package/web/assets/{sankeyDiagram-W5VNT64P-ocFhBtMa.js → sankeyDiagram-W5VNT64P-X7ftmy-X.js} +1 -1
  111. package/web/assets/{sequenceDiagram-SI44F4Z6-itHtrU2O.js → sequenceDiagram-SI44F4Z6-CJiMe-ST.js} +1 -1
  112. package/web/assets/{sizeCapture-X5ZJPWSS-Bj_0p16L.js → sizeCapture-X5ZJPWSS-D0BOwnXt.js} +1 -1
  113. package/web/assets/{stateDiagram-OKZ733FA-BZ3FXzdZ.js → stateDiagram-OKZ733FA-BiPOcNEG.js} +1 -1
  114. package/web/assets/stateDiagram-v2-UEYNNEHI-URZ9UNRl.js +1 -0
  115. package/web/assets/swimlanes-SLNWSIFB-CtLG2CHX.js +2 -0
  116. package/web/assets/swimlanesDiagram-ULZ7WXOC-CdA8x7iG.js +8 -0
  117. package/web/assets/{timeline-definition-Z64GVDOM-B-IqLhkR.js → timeline-definition-Z64GVDOM-NOUkxoIk.js} +1 -1
  118. package/web/assets/{vennDiagram-T6HMQDX7-Dr1sgkuO.js → vennDiagram-T6HMQDX7-jIX0UihP.js} +1 -1
  119. package/web/assets/{wardleyDiagram-T6FBY63Y-BOOJsnbk.js → wardleyDiagram-T6FBY63Y-BWfUG4_t.js} +1 -1
  120. package/web/assets/{xychartDiagram-ELKLHX3M-Bb3lgEh4.js → xychartDiagram-ELKLHX3M-CVZ-lb3j.js} +1 -1
  121. package/web/index.html +3 -2
  122. package/web/pet.html +2 -2
  123. package/web/assets/channel-AThd-Hly.js +0 -1
  124. package/web/assets/classDiagram-JCYQIIEL-Ccd6qf2i.js +0 -1
  125. package/web/assets/classDiagram-v2-OCEON4UE-Ccd6qf2i.js +0 -1
  126. package/web/assets/main-BaffLdJi.js +0 -528
  127. package/web/assets/stateDiagram-v2-UEYNNEHI-DacbF0mj.js +0 -1
  128. package/web/assets/swimlanes-SLNWSIFB-nlxlUqVN.js +0 -2
  129. package/web/assets/swimlanesDiagram-ULZ7WXOC-Bk858mY5.js +0 -8
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lookatstudy-mobile",
3
- "version": "0.18.0",
3
+ "version": "0.19.0",
4
4
  "description": "LookatStudy Termux portable bundle (server.cjs + web frontend)",
5
5
  "repository": {
6
6
  "type": "git",
package/server.cjs CHANGED
@@ -517676,6 +517676,16 @@ function htmlToMarkdown(html, opts = {}) {
517676
517676
  if (!document2.body || document2.body.childNodes.length === 0) {
517677
517677
  document2 = parseHTML(`<html><body>${html}</body></html>`).document;
517678
517678
  }
517679
+ for (const el of Array.from(document2.querySelectorAll("script[type='math/tex']"))) {
517680
+ const tex = (el.textContent ?? "").trim();
517681
+ if (tex)
517682
+ el.replaceWith(document2.createTextNode(tex.includes("\n") ? `$$${tex}$$` : `$${tex}$`));
517683
+ }
517684
+ for (const el of Array.from(document2.querySelectorAll(".katex"))) {
517685
+ const tex = (el.querySelector("annotation")?.textContent ?? "").trim();
517686
+ if (tex)
517687
+ el.replaceWith(document2.createTextNode(tex.includes("\n") ? `$$${tex}$$` : `$${tex}$`));
517688
+ }
517679
517689
  for (const tag of ["script", "style", "head"]) {
517680
517690
  for (const el of document2.querySelectorAll(tag))
517681
517691
  el.remove();
@@ -526237,6 +526247,153 @@ function splitSentences(text3, opts = {}) {
526237
526247
  return { sentences: out, rest: flush ? "" : rest };
526238
526248
  }
526239
526249
 
526250
+ // shared/math-speech.ts
526251
+ var SYMBOLS = [
526252
+ ["\\leq", "\u5C0F\u4E8E\u7B49\u4E8E"],
526253
+ ["\\le", "\u5C0F\u4E8E\u7B49\u4E8E"],
526254
+ ["\\geq", "\u5927\u4E8E\u7B49\u4E8E"],
526255
+ ["\\ge", "\u5927\u4E8E\u7B49\u4E8E"],
526256
+ ["\\neq", "\u4E0D\u7B49\u4E8E"],
526257
+ ["\\ne", "\u4E0D\u7B49\u4E8E"],
526258
+ ["\\approx", "\u7EA6\u7B49\u4E8E"],
526259
+ ["\\equiv", "\u6052\u7B49\u4E8E"],
526260
+ ["\\pm", "\u6B63\u8D1F"],
526261
+ ["\\times", "\u4E58\u4EE5"],
526262
+ ["\\cdot", "\u70B9\u4E58"],
526263
+ ["\\div", "\u9664\u4EE5"],
526264
+ ["\\to", "\u8D8B\u4E8E"],
526265
+ ["\\rightarrow", "\u8D8B\u4E8E"],
526266
+ ["\\Rightarrow", "\u63A8\u51FA"],
526267
+ ["\\infty", "\u65E0\u7A77"],
526268
+ ["\\sum", "\u6C42\u548C"],
526269
+ ["\\prod", "\u8FDE\u4E58"],
526270
+ ["\\int", "\u79EF\u5206"],
526271
+ ["\\lim", "\u6781\u9650"],
526272
+ ["\\log", "\u5BF9\u6570"],
526273
+ ["\\ln", "\u81EA\u7136\u5BF9\u6570"],
526274
+ ["\\exp", "\u6307\u6570"],
526275
+ ["\\in", "\u5C5E\u4E8E"],
526276
+ ["\\subset", "\u5305\u542B\u4E8E"],
526277
+ ["\\cup", "\u5E76"],
526278
+ ["\\cap", "\u4EA4"],
526279
+ ["\\forall", "\u4EFB\u610F"],
526280
+ ["\\exists", "\u5B58\u5728"],
526281
+ ["\\partial", "\u504F\u5BFC"],
526282
+ ["\\nabla", "\u68AF\u5EA6"],
526283
+ ["\\angle", "\u89D2"],
526284
+ ["\\degree", "\u5EA6"],
526285
+ ["\\cdots", "\u70B9\u70B9\u70B9"],
526286
+ ["\\ldots", "\u70B9\u70B9\u70B9"]
526287
+ ];
526288
+ var GREEK = {
526289
+ alpha: "\u963F\u5C14\u6CD5",
526290
+ beta: "\u8D1D\u5854",
526291
+ gamma: "\u4F3D\u9A6C",
526292
+ delta: "\u5FB7\u5C14\u5854",
526293
+ epsilon: "\u827E\u666E\u897F\u9686",
526294
+ zeta: "\u6CFD\u5854",
526295
+ eta: "\u4F0A\u5854",
526296
+ theta: "\u897F\u5854",
526297
+ iota: "\u7EA6\u5854",
526298
+ kappa: "\u5361\u5E15",
526299
+ lambda: "\u62C9\u59C6\u8FBE",
526300
+ mu: "\u7F2A",
526301
+ nu: "\u7EBD",
526302
+ xi: "\u514B\u897F",
526303
+ pi: "\u6D3E",
526304
+ rho: "\u67D4",
526305
+ sigma: "\u897F\u683C\u9A6C",
526306
+ tau: "\u9676",
526307
+ phi: "\u6590",
526308
+ chi: "\u51EF",
526309
+ psi: "\u666E\u897F",
526310
+ omega: "\u6B27\u7C73\u4F3D"
526311
+ };
526312
+ function readGroup(s, i) {
526313
+ if (s[i] !== "{")
526314
+ return null;
526315
+ let depth = 0;
526316
+ for (let j = i; j < s.length; j++) {
526317
+ if (s[j] === "{")
526318
+ depth++;
526319
+ else if (s[j] === "}") {
526320
+ depth--;
526321
+ if (depth === 0)
526322
+ return { body: s.slice(i + 1, j), end: j + 1 };
526323
+ }
526324
+ }
526325
+ return null;
526326
+ }
526327
+ function readAtom(s, i) {
526328
+ const g = readGroup(s, i);
526329
+ if (g)
526330
+ return g;
526331
+ return { body: s[i] ?? "", end: i + 1 };
526332
+ }
526333
+ function mathToSpokenZH(tex) {
526334
+ let s = tex;
526335
+ s = s.replace(/\\(?:left|right|displaystyle|limits)\b/g, " ");
526336
+ s = s.replace(/\\[,;!\s]|\\quad|\\qquad|~/g, " ");
526337
+ for (let guard = 0; guard < 12; guard++) {
526338
+ let next = s;
526339
+ next = next.replace(/\\[dt]?frac(?![A-Za-z])/g, "\\frac");
526340
+ {
526341
+ let i;
526342
+ while ((i = next.indexOf("\\frac")) >= 0) {
526343
+ const a = readAtom(next, i + 5);
526344
+ const b = readAtom(next, a.end);
526345
+ next = next.slice(0, i) + `${a.body} \u5206\u4E4B ${b.body} ` + next.slice(b.end);
526346
+ }
526347
+ }
526348
+ {
526349
+ let i;
526350
+ while ((i = next.indexOf("\\binom")) >= 0) {
526351
+ const a = readAtom(next, i + 6);
526352
+ const b = readAtom(next, a.end);
526353
+ next = next.slice(0, i) + `${a.body} \u53D6 ${b.body} ` + next.slice(b.end);
526354
+ }
526355
+ }
526356
+ next = next.replace(/\\sqrt\s*\[( {[^{}]*} |[^\s\\]+)\s*\]\s*/g, (_m, n) => `${n.trim()} \u6B21\u6839\u53F7 `);
526357
+ {
526358
+ let i;
526359
+ while ((i = next.indexOf("\\sqrt")) >= 0) {
526360
+ const a = readAtom(next, i + 5);
526361
+ next = next.slice(0, i) + `\u6839\u53F7 ${a.body} ` + next.slice(a.end);
526362
+ }
526363
+ }
526364
+ next = next.replace(/\\(?:mathbf|mathbb|mathrm|mathit|boldsymbol|text|operatorname)\s*/g, (m) => m.startsWith("\\text") ? "" : " ");
526365
+ if (next === s) {
526366
+ s = next;
526367
+ break;
526368
+ }
526369
+ s = next;
526370
+ }
526371
+ for (let guard = 0; guard < 8; guard++) {
526372
+ const next = s.replace(
526373
+ /(\\frac|[\w)\]}]|\s)\s*\^\s*(\{[^{}]*\}|[^\s])|(\\frac|[\w)\]}]| )\s*_\s*(\{[^{}]*\}|[^\s])/g,
526374
+ (_m, base1, sup, base2, sub) => {
526375
+ if (sup !== void 0)
526376
+ return `${base1} \u7684 ${sup.replace(/[{}]/g, "")} \u6B21\u65B9`;
526377
+ return `${base2} \u4E0B\u6807 ${sub.replace(/[{}]/g, "")}`;
526378
+ }
526379
+ );
526380
+ if (next === s)
526381
+ break;
526382
+ s = next;
526383
+ }
526384
+ for (const [cmd, zh2] of SYMBOLS)
526385
+ s = s.split(cmd).join(` ${zh2} `);
526386
+ s = s.replace(/\\([A-Za-z]+)\b/g, (_m, name18) => ` ${GREEK[name18] ?? name18} `);
526387
+ s = s.replace(/[{}]/g, " ");
526388
+ return s.replace(/\s+/g, " ").trim();
526389
+ }
526390
+ function speakMathInSentence(sentence) {
526391
+ return sentence.replace(/\$\$([^$]+)\$\$|\$([^$]+)\$/g, (_m, block, inline) => {
526392
+ const spoken = mathToSpokenZH(block ?? inline ?? "");
526393
+ return spoken ? ` ${spoken} ` : "";
526394
+ });
526395
+ }
526396
+
526240
526397
  // src/main/services/speech/tts-service.ts
526241
526398
  init_speech_model_manifest();
526242
526399
  init_speech_model_service();
@@ -551141,7 +551298,7 @@ async function speakMessage(emit2, dataDir, settings2, messageId, rawText, deps
551141
551298
  if (running)
551142
551299
  return running;
551143
551300
  const sentence = sentences[i];
551144
- const p = synth(dataDir, cfg, engine, sentence, {
551301
+ const p = synth(dataDir, cfg, engine, speakMathInSentence(sentence), {
551145
551302
  sid,
551146
551303
  onChunk: () => !mine.stopped && active === mine,
551147
551304
  custom: deps.custom ?? void 0
@@ -554384,6 +554541,7 @@ function buildGenerationPrompt(title, content, type, outLang) {
554384
554541
  ``,
554385
554542
  `\u51FA\u9898\u7EA2\u7EBF:`,
554386
554543
  `- \u7B54\u6848\u5FC5\u987B\u5728\u63D0\u4F9B\u7684\u5B66\u4E60\u5185\u5BB9\u4E2D\u6709\u4F9D\u636E\uFF0C\u4E0D\u53EF\u7F16\u9020\u5185\u5BB9\u91CC\u6CA1\u6709\u7684\u77E5\u8BC6`,
554544
+ `- \u6570\u5B66\u8868\u8FBE\u5F0F\u7528\u884C\u5185 $..$ \u6216\u884C\u95F4 $$..$$ \u7684 LaTeX \u8BB0\u6CD5\u4E66\u5199\uFF0C\u4E0D\u8981\u7528\u7EAF\u6587\u672C\u8FD1\u4F3C\uFF08\u754C\u9762\u4F1A\u6E32\u67D3\u6210\u516C\u5F0F\uFF09`,
554387
554545
  questionLanguageLine(outLang),
554388
554546
  `- \u5E72\u6270\u9879 plausible \u4F46 definitely wrong\uFF08\u4E0D\u80FD\u6709\u4E89\u8BAE\uFF09`,
554389
554547
  ``,
@@ -554901,6 +555059,7 @@ ${l.content || "(\u8BFE\u65F6\u65E0\u6B63\u6587)"}`
554901
555059
  `- \u9898\u5E72\u8003"\u7406\u89E3"\u548C"\u5E94\u7528",\u4E0D\u8981\u51FA\u6B7B\u8BB0\u786C\u80CC\u7684\u5B9A\u4E49\u9898`,
554902
555060
  `- \u5E72\u6270\u9879 plausible \u4F46 definitely wrong(\u57FA\u4E8E\u5B66\u4E60\u8005\u5E38\u72AF\u7684\u771F\u5B9E\u8BEF\u89E3)`,
554903
555061
  `- \u7B54\u6848\u5FC5\u987B\u5728\u63D0\u4F9B\u7684\u8BFE\u7A0B\u5185\u5BB9\u4E2D\u6709\u4F9D\u636E`,
555062
+ `- \u6570\u5B66\u8868\u8FBE\u5F0F\u7528\u884C\u5185 $..$ \u6216\u884C\u95F4 $$..$$ \u7684 LaTeX \u8BB0\u6CD5\u4E66\u5199,\u4E0D\u8981\u7528\u7EAF\u6587\u672C\u8FD1\u4F3C(\u754C\u9762\u4F1A\u6E32\u67D3\u6210\u516C\u5F0F)`,
554904
555063
  questionLanguageLine(outLang),
554905
555064
  ``,
554906
555065
  `\u4E25\u683C\u6309\u4EE5\u4E0B JSON \u683C\u5F0F\u8FD4\u56DE,\u4E0D\u8981\u52A0 markdown \u4EE3\u7801\u5757\u6807\u8BB0\u3001\u4E0D\u8981\u89E3\u91CA:`,
@@ -1 +1 @@
1
- import{g as p,r as u,d as a}from"./chunk-6Q2QTUOP-CZ89fwLd.js";import{p as f}from"./chunk-JWPE2WC7-CdCWYrp8.js";import{_ as n,l as o}from"./mermaid.core-ChBcV6rX.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-sXHUKhTr.js";import"./main-BaffLdJi.js";import"./index-CeFnA9sR.js";var v=d().RailroadAbnf.parser.LangiumParser,i=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),l=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:l,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=n(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},F={parser:R,db:a,renderer:u,styles:p};export{F as diagram};
1
+ import{g as p,r as u,d as a}from"./chunk-6Q2QTUOP-BBL9yZr5.js";import{p as f}from"./chunk-JWPE2WC7-Rx7velok.js";import{_ as n,l as o}from"./mermaid.core-BnzH2M4g.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-BoAEtYBt.js";import"./main-_hK--hbF.js";import"./index-DFfbtrtQ.js";var v=d().RailroadAbnf.parser.LangiumParser,i=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),l=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:l,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=n(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},F={parser:R,db:a,renderer:u,styles:p};export{F as diagram};
@@ -1 +1 @@
1
- import{Y as ln,$ as an,a0 as F,a1 as q,a2 as j,a3 as un,a4 as y,a5 as tn,a6 as J,a7 as _,a8 as rn,a9 as o,aa as on,ab as sn,ac as fn}from"./mermaid.core-ChBcV6rX.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,z,a){var O=I-l,i=D-h,n=z-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function U(l,h,I,D,v,A,z){var a=l-I,O=h-D,i=(z?A:-A)/J(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,B=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*J(on(0,T*T*R-P*P)),Y=(P*g-m*S)/R,$=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=Y-B,e=$-t,r=w-B,C=p-t;return x*x+e*e>r*r+C*C&&(Y=w,$=p),{cx:Y,cy:$,x01:-n,y01:-d,x11:Y*(v/T-1),y11:$*(v/T-1)}}function hn(){var l=cn,h=yn,I=j(0),D=null,v=gn,A=dn,z=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,B=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(B>tn-y)a.moveTo(s*F(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*F(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=B,S=B,Y=z.apply(this,arguments)/2,$=Y>y&&(D?+D.apply(this,arguments):J(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if($>y){var C=sn($/u*q(Y)),K=sn($/s*q(Y));(P-=C*2)>y?(C*=t?1:-1,R+=C,T-=C):(P=0,R=T=(f+c)/2),(S-=K*2)>y?(K*=t?1:-1,m+=K,g-=K):(S=0,m=g=(f+c)/2)}var G=s*F(m),H=s*q(m),L=u*F(T),M=u*q(T);if(w>y){var N=s*F(g),Q=s*q(g),V=u*F(R),W=u*q(R),E;if(B<an)if(E=pn(G,H,V,W,N,Q,L,M)){var X=G-E[0],Z=H-E[1],b=N-E[0],k=Q-E[1],nn=1/q(fn((X*b+Z*k)/(J(X*X+Z*Z)*J(b*b+k*k)))/2),en=J(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=U(V,W,G,H,s,x,t),r=U(N,Q,L,M,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(G,H),a.arc(0,0,s,m,g,!t)):a.moveTo(G,H),!(u>y)||!(P>y)?a.lineTo(L,M):p>y?(e=U(L,M,N,Q,u,-p,t),r=U(G,H,V,W,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[F(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:j(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:j(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:j(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:j(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:j(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:j(+n),i):A},i.padAngle=function(n){return arguments.length?(z=typeof n=="function"?n:j(+n),i):z},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
1
+ import{Y as ln,$ as an,a0 as F,a1 as q,a2 as j,a3 as un,a4 as y,a5 as tn,a6 as J,a7 as _,a8 as rn,a9 as o,aa as on,ab as sn,ac as fn}from"./mermaid.core-BnzH2M4g.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,z,a){var O=I-l,i=D-h,n=z-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function U(l,h,I,D,v,A,z){var a=l-I,O=h-D,i=(z?A:-A)/J(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,B=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*J(on(0,T*T*R-P*P)),Y=(P*g-m*S)/R,$=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=Y-B,e=$-t,r=w-B,C=p-t;return x*x+e*e>r*r+C*C&&(Y=w,$=p),{cx:Y,cy:$,x01:-n,y01:-d,x11:Y*(v/T-1),y11:$*(v/T-1)}}function hn(){var l=cn,h=yn,I=j(0),D=null,v=gn,A=dn,z=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,B=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(B>tn-y)a.moveTo(s*F(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*F(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=B,S=B,Y=z.apply(this,arguments)/2,$=Y>y&&(D?+D.apply(this,arguments):J(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if($>y){var C=sn($/u*q(Y)),K=sn($/s*q(Y));(P-=C*2)>y?(C*=t?1:-1,R+=C,T-=C):(P=0,R=T=(f+c)/2),(S-=K*2)>y?(K*=t?1:-1,m+=K,g-=K):(S=0,m=g=(f+c)/2)}var G=s*F(m),H=s*q(m),L=u*F(T),M=u*q(T);if(w>y){var N=s*F(g),Q=s*q(g),V=u*F(R),W=u*q(R),E;if(B<an)if(E=pn(G,H,V,W,N,Q,L,M)){var X=G-E[0],Z=H-E[1],b=N-E[0],k=Q-E[1],nn=1/q(fn((X*b+Z*k)/(J(X*X+Z*Z)*J(b*b+k*k)))/2),en=J(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=U(V,W,G,H,s,x,t),r=U(N,Q,L,M,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(G,H),a.arc(0,0,s,m,g,!t)):a.moveTo(G,H),!(u>y)||!(P>y)?a.lineTo(L,M):p>y?(e=U(L,M,N,Q,u,-p,t),r=U(G,H,V,W,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[F(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:j(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:j(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:j(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:j(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:j(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:j(+n),i):A},i.padAngle=function(n){return arguments.length?(z=typeof n=="function"?n:j(+n),i):z},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};