@drghaliasri/butex 5.5.5 → 5.6.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.
package/dist/index.js CHANGED
@@ -735,6 +735,27 @@ function registerAtomicCommandMacros(CommandMap) {
735
735
  return COMMAND_MAP3;
736
736
  }
737
737
 
738
+ // src/register/colonRelations.ts
739
+ var COMMAND_MAP4 = "butex-colon-relation-macros";
740
+ var COLON_RELATIONS = {
741
+ coloneqq: "\u2254",
742
+ eqqcolon: "\u2255"
743
+ };
744
+ function colonRelation(parser, name) {
745
+ const commandName = name.replace(/^\\/, "");
746
+ const label = COLON_RELATIONS[commandName] ?? commandName;
747
+ const node = parser.create("token", "mo", { texClass: 3 }, label);
748
+ parser.Push(node);
749
+ }
750
+ var colonRelationTyped = colonRelation;
751
+ function registerColonRelationCommandMacros(CommandMap) {
752
+ const mappings = Object.fromEntries(
753
+ Object.keys(COLON_RELATIONS).map((name) => [name, colonRelationTyped])
754
+ );
755
+ new CommandMap(COMMAND_MAP4, mappings);
756
+ return COMMAND_MAP4;
757
+ }
758
+
738
759
  // src/editor/characterFonts.ts
739
760
  var CHARACTER_FONT_SPECS = [
740
761
  {
@@ -808,7 +829,7 @@ function characterFontSpecByMacro(macro) {
808
829
  }
809
830
 
810
831
  // src/register/fontText.ts
811
- var COMMAND_MAP4 = "butex-font-text-macros";
832
+ var COMMAND_MAP5 = "butex-font-text-macros";
812
833
  function fontText(className, parser, name) {
813
834
  const text = parser.GetArgument(name);
814
835
  const node = parser.create(
@@ -826,12 +847,12 @@ function registerFontTextCommands(CommandMap) {
826
847
  ((parser, name) => fontText(font.mathJaxClass, parser, name))
827
848
  ])
828
849
  );
829
- new CommandMap(COMMAND_MAP4, mappings);
830
- return COMMAND_MAP4;
850
+ new CommandMap(COMMAND_MAP5, mappings);
851
+ return COMMAND_MAP5;
831
852
  }
832
853
 
833
854
  // src/register/mirror.ts
834
- var COMMAND_MAP5 = "butex-mirror-macros";
855
+ var COMMAND_MAP6 = "butex-mirror-macros";
835
856
  function mirrorContent(parser, name) {
836
857
  const arg = parser.GetArgument(name);
837
858
  const TexParserClass = parser.constructor;
@@ -842,12 +863,12 @@ function mirrorContent(parser, name) {
842
863
  }
843
864
  var mirrorContentTyped = mirrorContent;
844
865
  function registerMirrorCommand(CommandMap) {
845
- new CommandMap(COMMAND_MAP5, { butexmirror: mirrorContentTyped });
846
- return COMMAND_MAP5;
866
+ new CommandMap(COMMAND_MAP6, { butexmirror: mirrorContentTyped });
867
+ return COMMAND_MAP6;
847
868
  }
848
869
 
849
870
  // src/register/passthrough.ts
850
- var COMMAND_MAP6 = "butex-passthrough-macros";
871
+ var COMMAND_MAP7 = "butex-passthrough-macros";
851
872
  function passthroughArgument(parser, name) {
852
873
  const arg = parser.GetArgument(name);
853
874
  const TexParserClass = parser.constructor;
@@ -864,12 +885,12 @@ function arabvecArgument(parser, name) {
864
885
  var passthroughArgumentTyped = passthroughArgument;
865
886
  var arabvecArgumentTyped = arabvecArgument;
866
887
  function registerPassthroughCommandMacros(CommandMap) {
867
- new CommandMap(COMMAND_MAP6, {
888
+ new CommandMap(COMMAND_MAP7, {
868
889
  unit: passthroughArgumentTyped,
869
890
  idx: passthroughArgumentTyped,
870
891
  arabvec: arabvecArgumentTyped
871
892
  });
872
- return COMMAND_MAP6;
893
+ return COMMAND_MAP7;
873
894
  }
874
895
 
875
896
  // src/register.ts
@@ -896,6 +917,7 @@ function registerBuTeX(mathJax) {
896
917
  registerArabSqrtCommand(CommandMap),
897
918
  registerPrescriptCommand(CommandMap),
898
919
  registerAtomicCommandMacros(CommandMap),
920
+ registerColonRelationCommandMacros(CommandMap),
899
921
  registerFontTextCommands(CommandMap),
900
922
  registerMirrorCommand(CommandMap),
901
923
  registerPassthroughCommandMacros(CommandMap)
@@ -2117,6 +2139,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2117
2139
  category: "operators1",
2118
2140
  Tex: "\\neq",
2119
2141
  mirror: true,
2142
+ compileMirror: true,
2120
2143
  Label: "\u2260",
2121
2144
  title: "\u0644\u0627 \u064A\u0633\u0627\u0648\u064A",
2122
2145
  svg_path: null
@@ -2156,6 +2179,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2156
2179
  Tex: "\\leq",
2157
2180
  mirror: true,
2158
2181
  displayMirror: false,
2182
+ compileMirror: true,
2159
2183
  Label: "\u2264",
2160
2184
  title: "\u0623\u0635\u063A\u0631 \u0645\u0646 \u0623\u0648 \u064A\u0633\u0627\u0648\u064A",
2161
2185
  svg_path: null
@@ -2166,6 +2190,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2166
2190
  Tex: "\\geq",
2167
2191
  mirror: true,
2168
2192
  displayMirror: false,
2193
+ compileMirror: true,
2169
2194
  Label: "\u2265",
2170
2195
  title: "\u0623\u0643\u0628\u0631 \u0645\u0646 \u0623\u0648 \u064A\u0633\u0627\u0648\u064A",
2171
2196
  svg_path: null
@@ -2176,6 +2201,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2176
2201
  Tex: "\\coloneqq",
2177
2202
  mirror: true,
2178
2203
  displayMirror: false,
2204
+ compileMirror: true,
2179
2205
  Label: "\u2254",
2180
2206
  title: "\u064A\u0639\u0631\u0641 \u0628\u0623\u0646\u0647 \u064A\u0633\u0627\u0648\u064A",
2181
2207
  svg_path: null
@@ -2186,6 +2212,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2186
2212
  Tex: "\\eqqcolon",
2187
2213
  mirror: true,
2188
2214
  displayMirror: false,
2215
+ compileMirror: true,
2189
2216
  Label: "\u2255",
2190
2217
  title: "\u064A\u0633\u0627\u0648\u064A \u0628\u0627\u0644\u062A\u0639\u0631\u064A\u0641",
2191
2218
  svg_path: null
@@ -2197,6 +2224,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2197
2224
  Tex: "\\propto",
2198
2225
  mirror: true,
2199
2226
  displayMirror: false,
2227
+ compileMirror: true,
2200
2228
  Label: "\u221D",
2201
2229
  title: "\u064A\u062A\u0646\u0627\u0633\u0628 \u0645\u0639",
2202
2230
  svg_path: null
@@ -2207,6 +2235,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2207
2235
  Tex: "\\in",
2208
2236
  mirror: true,
2209
2237
  displayMirror: false,
2238
+ compileMirror: true,
2210
2239
  Label: "\u2208",
2211
2240
  title: "\u064A\u0646\u062A\u0645\u064A \u0625\u0644\u0649",
2212
2241
  svg_path: null
@@ -2227,6 +2256,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2227
2256
  Tex: "\\subset",
2228
2257
  mirror: true,
2229
2258
  displayMirror: false,
2259
+ compileMirror: true,
2230
2260
  Label: "\u2282",
2231
2261
  title: "\u0645\u062C\u0645\u0648\u0639\u0629 \u062C\u0632\u0626\u064A\u0629 \u0645\u0646",
2232
2262
  svg_path: null
@@ -2237,6 +2267,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2237
2267
  Tex: "\\supset",
2238
2268
  mirror: true,
2239
2269
  displayMirror: false,
2270
+ compileMirror: true,
2240
2271
  Label: "\u2283",
2241
2272
  title: "\u0645\u062C\u0645\u0648\u0639\u0629 \u0634\u0627\u0645\u0644\u0629 \u0644\u0640",
2242
2273
  svg_path: null
@@ -2247,6 +2278,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2247
2278
  Tex: "\\subseteq",
2248
2279
  mirror: true,
2249
2280
  displayMirror: false,
2281
+ compileMirror: true,
2250
2282
  Label: "\u2286",
2251
2283
  title: "\u0645\u062C\u0645\u0648\u0639\u0629 \u062C\u0632\u0626\u064A\u0629 \u0623\u0648 \u062A\u0633\u0627\u0648\u064A",
2252
2284
  svg_path: null
@@ -2257,6 +2289,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2257
2289
  Tex: "\\supseteq",
2258
2290
  mirror: true,
2259
2291
  displayMirror: false,
2292
+ compileMirror: true,
2260
2293
  Label: "\u2287",
2261
2294
  title: "\u0645\u062C\u0645\u0648\u0639\u0629 \u0634\u0627\u0645\u0644\u0629 \u0623\u0648 \u062A\u0633\u0627\u0648\u064A",
2262
2295
  svg_path: null
@@ -2297,6 +2330,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2297
2330
  Tex: "\\nsubseteq",
2298
2331
  mirror: true,
2299
2332
  displayMirror: false,
2333
+ compileMirror: true,
2300
2334
  Label: "\u2288",
2301
2335
  title: "\u0644\u064A\u0633\u062A \u0645\u062C\u0645\u0648\u0639\u0629 \u062C\u0632\u0626\u064A\u0629 \u0623\u0648 \u062A\u0633\u0627\u0648\u064A",
2302
2336
  svg_path: null
@@ -2307,6 +2341,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2307
2341
  Tex: "\\nsupseteq",
2308
2342
  mirror: true,
2309
2343
  displayMirror: false,
2344
+ compileMirror: true,
2310
2345
  Label: "\u2289",
2311
2346
  title: "\u0644\u064A\u0633\u062A \u0645\u062C\u0645\u0648\u0639\u0629 \u0634\u0627\u0645\u0644\u0629 \u0623\u0648 \u062A\u0633\u0627\u0648\u064A",
2312
2347
  svg_path: null
@@ -2354,6 +2389,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2354
2389
  Tex: "\\ddots",
2355
2390
  mirror: true,
2356
2391
  displayMirror: false,
2392
+ compileMirror: true,
2357
2393
  Label: "\u22F1",
2358
2394
  title: "\u0646\u0642\u0627\u0637 \u0642\u0637\u0631\u064A\u0629",
2359
2395
  svg_path: null
@@ -2373,6 +2409,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2373
2409
  category: "operators3",
2374
2410
  Tex: "\\implies",
2375
2411
  mirror: true,
2412
+ compileMirror: true,
2376
2413
  Label: "\u21D2",
2377
2414
  title: "\u064A\u0633\u062A\u0644\u0632\u0645",
2378
2415
  svg_path: null
@@ -2382,6 +2419,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2382
2419
  category: "operators3",
2383
2420
  Tex: "\\impliedby",
2384
2421
  mirror: true,
2422
+ compileMirror: true,
2385
2423
  Label: "\u21D0",
2386
2424
  title: "\u0645\u0633\u062A\u0644\u0632\u0645 \u0645\u0646",
2387
2425
  svg_path: null
@@ -2400,6 +2438,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2400
2438
  category: "operators3",
2401
2439
  Tex: "\\Longrightarrow",
2402
2440
  mirror: true,
2441
+ compileMirror: true,
2403
2442
  Label: "\u27F9",
2404
2443
  title: "\u0633\u0647\u0645 \u0645\u0632\u062F\u0648\u062C \u0637\u0648\u064A\u0644 \u0625\u0644\u0649 \u0627\u0644\u064A\u0645\u064A\u0646",
2405
2444
  svg_path: null
@@ -2409,6 +2448,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2409
2448
  category: "operators3",
2410
2449
  Tex: "\\Longleftarrow",
2411
2450
  mirror: true,
2451
+ compileMirror: true,
2412
2452
  Label: "\u27F8",
2413
2453
  title: "\u0633\u0647\u0645 \u0645\u0632\u062F\u0648\u062C \u0637\u0648\u064A\u0644 \u0625\u0644\u0649 \u0627\u0644\u064A\u0633\u0627\u0631",
2414
2454
  svg_path: null
@@ -2418,6 +2458,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2418
2458
  category: "operators3",
2419
2459
  Tex: "\\to",
2420
2460
  mirror: true,
2461
+ compileMirror: true,
2421
2462
  Label: "\u2192",
2422
2463
  title: "\u064A\u0624\u0648\u0644 \u0625\u0644\u0649",
2423
2464
  svg_path: null
@@ -2427,6 +2468,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2427
2468
  category: "operators3",
2428
2469
  Tex: "\\rightleftharpoons",
2429
2470
  mirror: true,
2471
+ compileMirror: true,
2430
2472
  Label: "\u21CC",
2431
2473
  title: "\u0627\u062A\u0632\u0627\u0646",
2432
2474
  svg_path: null
@@ -2436,6 +2478,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2436
2478
  category: "operators3",
2437
2479
  Tex: "\\leftarrow",
2438
2480
  mirror: true,
2481
+ compileMirror: true,
2439
2482
  Label: "\u2190",
2440
2483
  title: "\u0633\u0647\u0645 \u0625\u0644\u0649 \u0627\u0644\u064A\u0633\u0627\u0631",
2441
2484
  svg_path: null
@@ -2445,6 +2488,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2445
2488
  category: "operators3",
2446
2489
  Tex: "\\rightarrow",
2447
2490
  mirror: true,
2491
+ compileMirror: true,
2448
2492
  Label: "\u2192",
2449
2493
  title: "\u0633\u0647\u0645 \u0625\u0644\u0649 \u0627\u0644\u064A\u0645\u064A\u0646",
2450
2494
  svg_path: null
@@ -2454,6 +2498,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2454
2498
  category: "operators3",
2455
2499
  Tex: "\\Leftarrow",
2456
2500
  mirror: true,
2501
+ compileMirror: true,
2457
2502
  Label: "\u21D0",
2458
2503
  title: "\u0633\u0647\u0645 \u0645\u0632\u062F\u0648\u062C \u0625\u0644\u0649 \u0627\u0644\u064A\u0633\u0627\u0631",
2459
2504
  svg_path: null
@@ -2463,6 +2508,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2463
2508
  category: "operators3",
2464
2509
  Tex: "\\Rightarrow",
2465
2510
  mirror: true,
2511
+ compileMirror: true,
2466
2512
  Label: "\u21D2",
2467
2513
  title: "\u0633\u0647\u0645 \u0645\u0632\u062F\u0648\u062C \u0625\u0644\u0649 \u0627\u0644\u064A\u0645\u064A\u0646",
2468
2514
  svg_path: null
@@ -2472,6 +2518,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2472
2518
  category: "operators3",
2473
2519
  Tex: "\\leftharpoonup",
2474
2520
  mirror: true,
2521
+ compileMirror: true,
2475
2522
  Label: "\u21BC",
2476
2523
  title: "\u0633\u0647\u0645 \u062E\u0637\u0627\u0641\u064A \u0639\u0644\u0648\u064A \u0625\u0644\u0649 \u0627\u0644\u064A\u0633\u0627\u0631",
2477
2524
  svg_path: null
@@ -2481,6 +2528,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2481
2528
  category: "operators3",
2482
2529
  Tex: "\\rightharpoonup",
2483
2530
  mirror: true,
2531
+ compileMirror: true,
2484
2532
  Label: "\u21C0",
2485
2533
  title: "\u0633\u0647\u0645 \u062E\u0637\u0627\u0641\u064A \u0639\u0644\u0648\u064A \u0625\u0644\u0649 \u0627\u0644\u064A\u0645\u064A\u0646",
2486
2534
  svg_path: null
@@ -2490,6 +2538,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2490
2538
  category: "operators3",
2491
2539
  Tex: "\\leftharpoondown",
2492
2540
  mirror: true,
2541
+ compileMirror: true,
2493
2542
  Label: "\u21BD",
2494
2543
  title: "\u0633\u0647\u0645 \u062E\u0637\u0627\u0641\u064A \u0633\u0641\u0644\u064A \u0625\u0644\u0649 \u0627\u0644\u064A\u0633\u0627\u0631",
2495
2544
  svg_path: null
@@ -2499,6 +2548,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2499
2548
  category: "operators3",
2500
2549
  Tex: "\\rightharpoondown",
2501
2550
  mirror: true,
2551
+ compileMirror: true,
2502
2552
  Label: "\u21C1",
2503
2553
  title: "\u0633\u0647\u0645 \u062E\u0637\u0627\u0641\u064A \u0633\u0641\u0644\u064A \u0625\u0644\u0649 \u0627\u0644\u064A\u0645\u064A\u0646",
2504
2554
  svg_path: null
@@ -2509,6 +2559,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2509
2559
  category: "integrals",
2510
2560
  Tex: "\\int",
2511
2561
  mirror: true,
2562
+ compileMirror: true,
2512
2563
  Label: "\u222B",
2513
2564
  title: "\u062A\u0643\u0627\u0645\u0644",
2514
2565
  svg_path: null
@@ -2519,6 +2570,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2519
2570
  Tex: "\\iint",
2520
2571
  mirror: true,
2521
2572
  displayMirror: false,
2573
+ compileMirror: true,
2522
2574
  Label: "\u222C",
2523
2575
  title: "\u062A\u0643\u0627\u0645\u0644 \u0645\u0632\u062F\u0648\u062C",
2524
2576
  svg_path: null
@@ -2529,6 +2581,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2529
2581
  Tex: "\\iiint",
2530
2582
  mirror: true,
2531
2583
  displayMirror: false,
2584
+ compileMirror: true,
2532
2585
  Label: "\u222D",
2533
2586
  title: "\u062A\u0643\u0627\u0645\u0644 \u062B\u0644\u0627\u062B\u064A",
2534
2587
  svg_path: null
@@ -2539,6 +2592,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2539
2592
  Tex: "\\iiiint",
2540
2593
  mirror: true,
2541
2594
  displayMirror: false,
2595
+ compileMirror: true,
2542
2596
  Label: "\u2A0C",
2543
2597
  title: "\u062A\u0643\u0627\u0645\u0644 \u0631\u0628\u0627\u0639\u064A",
2544
2598
  svg_path: null
@@ -2549,6 +2603,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2549
2603
  Tex: "\\oint",
2550
2604
  mirror: true,
2551
2605
  displayMirror: false,
2606
+ compileMirror: true,
2552
2607
  Label: "\u222E",
2553
2608
  title: "\u062A\u0643\u0627\u0645\u0644 \u0645\u063A\u0644\u0642",
2554
2609
  svg_path: null
@@ -2559,6 +2614,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2559
2614
  Tex: "\\oiint",
2560
2615
  mirror: true,
2561
2616
  displayMirror: false,
2617
+ compileMirror: true,
2562
2618
  Label: "\u222F",
2563
2619
  title: "\u062A\u0643\u0627\u0645\u0644 \u0633\u0637\u062D\u064A \u0645\u063A\u0644\u0642",
2564
2620
  svg_path: null
@@ -2569,6 +2625,7 @@ var ATOMIC_OPERATOR_COMMANDS = {
2569
2625
  Tex: "\\oiiint",
2570
2626
  mirror: true,
2571
2627
  displayMirror: false,
2628
+ compileMirror: true,
2572
2629
  Label: "\u2230",
2573
2630
  title: "\u062A\u0643\u0627\u0645\u0644 \u062D\u062C\u0645\u064A \u0645\u063A\u0644\u0642",
2574
2631
  svg_path: null
@@ -2578,8 +2635,9 @@ function shouldMirrorOperatorDisplay(command) {
2578
2635
  return command?.displayMirror ?? command?.mirror ?? false;
2579
2636
  }
2580
2637
  var MIRRORED_OPERATOR_TEX = Object.values(ATOMIC_OPERATOR_COMMANDS).filter((command) => command.mirror).map((command) => command.Tex).sort((a, b) => b.length - a.length);
2581
- function matchingMirroredOperator(tex, index) {
2582
- for (const operatorTex of MIRRORED_OPERATOR_TEX) {
2638
+ var COMPILE_MIRRORED_OPERATOR_TEX = Object.values(ATOMIC_OPERATOR_COMMANDS).filter((command) => "compileMirror" in command && command.compileMirror).map((command) => command.Tex).sort((a, b) => b.length - a.length);
2639
+ function matchingMirroredOperatorFrom(tex, index, operatorTexList) {
2640
+ for (const operatorTex of operatorTexList) {
2583
2641
  if (!tex.startsWith(operatorTex, index)) {
2584
2642
  continue;
2585
2643
  }
@@ -2610,19 +2668,26 @@ function findMatchingBrace(tex, openIndex) {
2610
2668
  }
2611
2669
  return -1;
2612
2670
  }
2613
- function mirrorBuTeXOperatorsInTex(tex) {
2671
+ function mirrorBuTeXOperatorsInTex(tex, options = {}) {
2672
+ const mirroredOperatorTex = options.target === "compile" ? COMPILE_MIRRORED_OPERATOR_TEX : MIRRORED_OPERATOR_TEX;
2614
2673
  let result = "";
2615
2674
  let index = 0;
2616
2675
  while (index < tex.length) {
2617
2676
  if (tex.startsWith("\\butexmirror{", index)) {
2618
2677
  const end = findMatchingBrace(tex, index + "\\butexmirror".length);
2619
2678
  if (end !== -1) {
2620
- result += tex.slice(index, end + 1);
2679
+ const bodyStart = index + "\\butexmirror{".length;
2680
+ const body = tex.slice(bodyStart, end);
2681
+ if (options.target === "compile" && MIRRORED_OPERATOR_TEX.includes(body) && !mirroredOperatorTex.includes(body)) {
2682
+ result += body;
2683
+ } else {
2684
+ result += tex.slice(index, end + 1);
2685
+ }
2621
2686
  index = end + 1;
2622
2687
  continue;
2623
2688
  }
2624
2689
  }
2625
- const operatorTex = matchingMirroredOperator(tex, index);
2690
+ const operatorTex = matchingMirroredOperatorFrom(tex, index, mirroredOperatorTex);
2626
2691
  if (operatorTex) {
2627
2692
  result += `\\butexmirror{${operatorTex}}`;
2628
2693
  index += operatorTex.length;