@sciexpr/renderer 0.1.0 → 0.1.1

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.
package/dist/index.cjs CHANGED
@@ -92,8 +92,13 @@ var LatexReverseRenderer = class {
92
92
  switch (n.kind) {
93
93
  case "root":
94
94
  return n.children.map((c) => this.renderNode(c)).join("");
95
- case "symbol":
96
- return n.value;
95
+ case "symbol": {
96
+ const v = n.value;
97
+ if (v.startsWith("\\") && /[a-zA-Z]$/.test(v)) {
98
+ return v + " ";
99
+ }
100
+ return v;
101
+ }
97
102
  case "frac":
98
103
  return `\\frac{${this.renderNode(n.numerator)}}{${this.renderNode(n.denominator)}}`;
99
104
  case "script": {
@@ -121,6 +126,7 @@ var LatexReverseRenderer = class {
121
126
  return `\\begin{${type}}${cols}${rows}\\end{${type}}`;
122
127
  }
123
128
  case "text":
129
+ if (n.content === "&") return "&";
124
130
  return `\\text{${n.content}}`;
125
131
  case "space":
126
132
  return n.width === 1 ? "\\," : "\\quad";
@@ -193,12 +199,15 @@ var KatexRenderer = class {
193
199
  latexRenderer = new LatexReverseRenderer();
194
200
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
195
201
  katexInstance = null;
202
+ /** Promise that resolves when KaTeX is loaded (or fails) */
203
+ ready;
196
204
  constructor() {
197
- this.loadKatex();
205
+ this.ready = this.loadKatex();
198
206
  }
199
207
  async loadKatex() {
200
208
  try {
201
209
  this.katexInstance = await import("katex");
210
+ await import("katex/contrib/mhchem");
202
211
  } catch {
203
212
  this.katexInstance = null;
204
213
  }
package/dist/index.d.cts CHANGED
@@ -109,6 +109,8 @@ declare class KatexRenderer implements IRenderer {
109
109
  readonly outputFormat: "html";
110
110
  private latexRenderer;
111
111
  private katexInstance;
112
+ /** Promise that resolves when KaTeX is loaded (or fails) */
113
+ readonly ready: Promise<void>;
112
114
  constructor();
113
115
  private loadKatex;
114
116
  /** 手动设置 KaTeX 实例 */
package/dist/index.d.ts CHANGED
@@ -109,6 +109,8 @@ declare class KatexRenderer implements IRenderer {
109
109
  readonly outputFormat: "html";
110
110
  private latexRenderer;
111
111
  private katexInstance;
112
+ /** Promise that resolves when KaTeX is loaded (or fails) */
113
+ readonly ready: Promise<void>;
112
114
  constructor();
113
115
  private loadKatex;
114
116
  /** 手动设置 KaTeX 实例 */
package/dist/index.js CHANGED
@@ -52,8 +52,13 @@ var LatexReverseRenderer = class {
52
52
  switch (n.kind) {
53
53
  case "root":
54
54
  return n.children.map((c) => this.renderNode(c)).join("");
55
- case "symbol":
56
- return n.value;
55
+ case "symbol": {
56
+ const v = n.value;
57
+ if (v.startsWith("\\") && /[a-zA-Z]$/.test(v)) {
58
+ return v + " ";
59
+ }
60
+ return v;
61
+ }
57
62
  case "frac":
58
63
  return `\\frac{${this.renderNode(n.numerator)}}{${this.renderNode(n.denominator)}}`;
59
64
  case "script": {
@@ -81,6 +86,7 @@ var LatexReverseRenderer = class {
81
86
  return `\\begin{${type}}${cols}${rows}\\end{${type}}`;
82
87
  }
83
88
  case "text":
89
+ if (n.content === "&") return "&";
84
90
  return `\\text{${n.content}}`;
85
91
  case "space":
86
92
  return n.width === 1 ? "\\," : "\\quad";
@@ -153,12 +159,15 @@ var KatexRenderer = class {
153
159
  latexRenderer = new LatexReverseRenderer();
154
160
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
155
161
  katexInstance = null;
162
+ /** Promise that resolves when KaTeX is loaded (or fails) */
163
+ ready;
156
164
  constructor() {
157
- this.loadKatex();
165
+ this.ready = this.loadKatex();
158
166
  }
159
167
  async loadKatex() {
160
168
  try {
161
169
  this.katexInstance = await import("katex");
170
+ await import("katex/contrib/mhchem");
162
171
  } catch {
163
172
  this.katexInstance = null;
164
173
  }
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@sciexpr/renderer",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Scientific Expression Engine - Multi-format renderer (KaTeX, Unicode, MathML, LaTeX)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
7
- "module": "./dist/index.mjs",
7
+ "module": "./dist/index.js",
8
8
  "types": "./dist/index.d.ts",
9
9
  "exports": {
10
10
  ".": {
11
11
  "types": "./dist/index.d.ts",
12
- "import": "./dist/index.mjs",
12
+ "import": "./dist/index.js",
13
13
  "require": "./dist/index.cjs"
14
14
  }
15
15
  },