@sciexpr/presets 0.1.0 → 0.1.2

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
@@ -274,13 +274,48 @@ var STATS_TEMPLATES = [
274
274
  }
275
275
  ];
276
276
  var PHYSICS_TEMPLATES = [
277
+ // --------------------------------------------------------------------------
278
+ // 力学 (Mechanics)
279
+ // --------------------------------------------------------------------------
277
280
  {
278
- id: "einstein-emc2",
279
- name: "\u8D28\u80FD\u65B9\u7A0B",
280
- latex: "E = mc^{2}",
281
+ id: "velocity-avg",
282
+ name: "\u5E73\u5747\u901F\u5EA6",
283
+ latex: "\\bar{v} = \\frac{\\Delta x}{\\Delta t}",
281
284
  category: "physics",
282
- description: "\u7231\u56E0\u65AF\u5766\u8D28\u80FD\u65B9\u7A0B",
283
- tags: ["einstein", "energy", "mass"]
285
+ description: "\u5E73\u5747\u901F\u5EA6\u5B9A\u4E49",
286
+ tags: ["kinematics", "velocity", "mechanics"]
287
+ },
288
+ {
289
+ id: "acceleration-def",
290
+ name: "\u52A0\u901F\u5EA6\u5B9A\u4E49",
291
+ latex: "\\vec{a} = \\frac{\\Delta \\vec{v}}{\\Delta t}",
292
+ category: "physics",
293
+ description: "\u52A0\u901F\u5EA6\u5B9A\u4E49",
294
+ tags: ["kinematics", "acceleration", "mechanics"]
295
+ },
296
+ {
297
+ id: "kinematic-vt",
298
+ name: "\u5300\u53D8\u901F\u901F\u5EA6\u516C\u5F0F",
299
+ latex: "v = v_0 + at",
300
+ category: "physics",
301
+ description: "\u5300\u53D8\u901F\u76F4\u7EBF\u8FD0\u52A8\u901F\u5EA6\u516C\u5F0F",
302
+ tags: ["kinematics", "mechanics"]
303
+ },
304
+ {
305
+ id: "kinematic-s",
306
+ name: "\u5300\u53D8\u901F\u4F4D\u79FB\u516C\u5F0F",
307
+ latex: "s = v_0 t + \\frac{1}{2} a t^{2}",
308
+ category: "physics",
309
+ description: "\u5300\u53D8\u901F\u76F4\u7EBF\u8FD0\u52A8\u4F4D\u79FB\u516C\u5F0F",
310
+ tags: ["kinematics", "mechanics"]
311
+ },
312
+ {
313
+ id: "kinematic-v2",
314
+ name: "\u901F\u5EA6-\u4F4D\u79FB\u5173\u7CFB",
315
+ latex: "v^{2} - v_0^{2} = 2 a s",
316
+ category: "physics",
317
+ description: "\u5300\u53D8\u901F\u76F4\u7EBF\u8FD0\u52A8\u901F\u5EA6-\u4F4D\u79FB\u5173\u7CFB",
318
+ tags: ["kinematics", "mechanics"]
284
319
  },
285
320
  {
286
321
  id: "newton-2nd",
@@ -288,8 +323,316 @@ var PHYSICS_TEMPLATES = [
288
323
  latex: "\\vec{F} = m\\vec{a}",
289
324
  category: "physics",
290
325
  description: "\u725B\u987F\u7B2C\u4E8C\u5B9A\u5F8B",
291
- tags: ["newton", "force", "acceleration"]
326
+ tags: ["newton", "force", "acceleration", "mechanics"]
327
+ },
328
+ {
329
+ id: "newton-3rd",
330
+ name: "\u725B\u987F\u7B2C\u4E09\u5B9A\u5F8B",
331
+ latex: "\\vec{F}_{AB} = -\\vec{F}_{BA}",
332
+ category: "physics",
333
+ description: "\u725B\u987F\u7B2C\u4E09\u5B9A\u5F8B\uFF08\u4F5C\u7528\u529B\u4E0E\u53CD\u4F5C\u7528\u529B\uFF09",
334
+ tags: ["newton", "mechanics"]
335
+ },
336
+ {
337
+ id: "momentum-def",
338
+ name: "\u52A8\u91CF\u5B9A\u4E49",
339
+ latex: "\\vec{p} = m\\vec{v}",
340
+ category: "physics",
341
+ description: "\u52A8\u91CF\u5B9A\u4E49",
342
+ tags: ["momentum", "mechanics"]
343
+ },
344
+ {
345
+ id: "momentum-conservation",
346
+ name: "\u52A8\u91CF\u5B88\u6052",
347
+ latex: "\\vec{p}_1 + \\vec{p}_2 = \\vec{p}_1' + \\vec{p}_2'",
348
+ category: "physics",
349
+ description: "\u52A8\u91CF\u5B88\u6052\u5B9A\u5F8B",
350
+ tags: ["momentum", "conservation", "mechanics"]
351
+ },
352
+ {
353
+ id: "impulse",
354
+ name: "\u51B2\u91CF\u5B9A\u7406",
355
+ latex: "\\vec{F}\\Delta t = \\Delta \\vec{p}",
356
+ category: "physics",
357
+ description: "\u51B2\u91CF\u5B9A\u7406\uFF08\u52A8\u91CF\u5B9A\u7406\uFF09",
358
+ tags: ["impulse", "momentum", "mechanics"]
359
+ },
360
+ {
361
+ id: "kinetic-energy",
362
+ name: "\u52A8\u80FD\u5B9A\u7406",
363
+ latex: "W = \\Delta E_k = \\frac{1}{2} m v^{2} - \\frac{1}{2} m v_0^{2}",
364
+ category: "physics",
365
+ description: "\u52A8\u80FD\u5B9A\u7406",
366
+ tags: ["energy", "kinetic", "mechanics"]
367
+ },
368
+ {
369
+ id: "potential-spring",
370
+ name: "\u5F39\u6027\u52BF\u80FD",
371
+ latex: "E_p = \\frac{1}{2} k x^{2}",
372
+ category: "physics",
373
+ description: "\u5F39\u6027\u52BF\u80FD\uFF08\u80E1\u514B\u5B9A\u5F8B\u52BF\u80FD\uFF09",
374
+ tags: ["energy", "spring", "mechanics"]
375
+ },
376
+ {
377
+ id: "potential-gravity",
378
+ name: "\u91CD\u529B\u52BF\u80FD",
379
+ latex: "E_p = mgh",
380
+ category: "physics",
381
+ description: "\u91CD\u529B\u52BF\u80FD",
382
+ tags: ["energy", "gravity", "mechanics"]
383
+ },
384
+ {
385
+ id: "mechanical-energy",
386
+ name: "\u673A\u68B0\u80FD\u5B88\u6052",
387
+ latex: "E_k + E_p = \\text{const}",
388
+ category: "physics",
389
+ description: "\u673A\u68B0\u80FD\u5B88\u6052\u5B9A\u5F8B",
390
+ tags: ["energy", "conservation", "mechanics"]
391
+ },
392
+ {
393
+ id: "work-def",
394
+ name: "\u529F\u7684\u5B9A\u4E49",
395
+ latex: "W = \\vec{F} \\cdot \\vec{s} = F s \\cos\\theta",
396
+ category: "physics",
397
+ description: "\u6052\u529B\u505A\u529F",
398
+ tags: ["work", "energy", "mechanics"]
399
+ },
400
+ {
401
+ id: "power-def",
402
+ name: "\u529F\u7387\u5B9A\u4E49",
403
+ latex: "P = \\frac{W}{t} = \\vec{F} \\cdot \\vec{v}",
404
+ category: "physics",
405
+ description: "\u5E73\u5747\u529F\u7387\u4E0E\u77AC\u65F6\u529F\u7387",
406
+ tags: ["power", "mechanics"]
407
+ },
408
+ {
409
+ id: "projectile-motion",
410
+ name: "\u629B\u4F53\u8FD0\u52A8\u65B9\u7A0B",
411
+ latex: "\\begin{cases} x = v_0 t \\cos\\theta \\\\ y = v_0 t \\sin\\theta - \\frac{1}{2} g t^{2} \\end{cases}",
412
+ category: "physics",
413
+ description: "\u629B\u4F53\u8FD0\u52A8\u53C2\u6570\u65B9\u7A0B",
414
+ tags: ["projectile", "kinematics", "mechanics"]
415
+ },
416
+ {
417
+ id: "shm",
418
+ name: "\u7B80\u8C10\u632F\u52A8",
419
+ latex: "x(t) = A \\cos(\\omega t + \\phi_0)",
420
+ category: "physics",
421
+ description: "\u7B80\u8C10\u632F\u52A8\u4F4D\u79FB\u65B9\u7A0B",
422
+ tags: ["shm", "oscillation", "mechanics"]
423
+ },
424
+ {
425
+ id: "shm-energy",
426
+ name: "\u7B80\u8C10\u632F\u52A8\u80FD\u91CF",
427
+ latex: "E = \\frac{1}{2} k A^{2}",
428
+ category: "physics",
429
+ description: "\u7B80\u8C10\u632F\u52A8\u603B\u80FD\u91CF",
430
+ tags: ["shm", "energy", "mechanics"]
431
+ },
432
+ // --------------------------------------------------------------------------
433
+ // 旋转运动 (Rotational Motion)
434
+ // --------------------------------------------------------------------------
435
+ {
436
+ id: "centripetal-force",
437
+ name: "\u5411\u5FC3\u529B",
438
+ latex: "F_c = m \\frac{v^{2}}{r} = m \\omega^{2} r",
439
+ category: "physics",
440
+ description: "\u5411\u5FC3\u529B\u516C\u5F0F",
441
+ tags: ["rotation", "centripetal", "mechanics"]
442
+ },
443
+ {
444
+ id: "angular-momentum",
445
+ name: "\u89D2\u52A8\u91CF",
446
+ latex: "\\vec{L} = \\vec{r} \\times \\vec{p} = I \\vec{\\omega}",
447
+ category: "physics",
448
+ description: "\u89D2\u52A8\u91CF\u5B9A\u4E49",
449
+ tags: ["rotation", "angular-momentum", "mechanics"]
450
+ },
451
+ {
452
+ id: "torque-def",
453
+ name: "\u529B\u77E9\u5B9A\u4E49",
454
+ latex: "\\vec{\\tau} = \\vec{r} \\times \\vec{F}",
455
+ category: "physics",
456
+ description: "\u529B\u77E9\u5B9A\u4E49",
457
+ tags: ["rotation", "torque", "mechanics"]
458
+ },
459
+ {
460
+ id: "torque-angular",
461
+ name: "\u8F6C\u52A8\u5B9A\u5F8B",
462
+ latex: "\\vec{\\tau} = I \\vec{\\alpha}",
463
+ category: "physics",
464
+ description: "\u521A\u4F53\u8F6C\u52A8\u5B9A\u5F8B",
465
+ tags: ["rotation", "torque", "mechanics"]
466
+ },
467
+ {
468
+ id: "rotational-ke",
469
+ name: "\u8F6C\u52A8\u52A8\u80FD",
470
+ latex: "E_k = \\frac{1}{2} I \\omega^{2}",
471
+ category: "physics",
472
+ description: "\u521A\u4F53\u8F6C\u52A8\u52A8\u80FD",
473
+ tags: ["rotation", "energy", "mechanics"]
474
+ },
475
+ // --------------------------------------------------------------------------
476
+ // 电磁学 (Electromagnetism)
477
+ // --------------------------------------------------------------------------
478
+ {
479
+ id: "coulomb-law",
480
+ name: "\u5E93\u4ED1\u5B9A\u5F8B",
481
+ latex: "F = k_e \\frac{q_1 q_2}{r^{2}}",
482
+ category: "physics",
483
+ description: "\u5E93\u4ED1\u5B9A\u5F8B\uFF08\u9759\u7535\u529B\uFF09",
484
+ tags: ["electrostatics", "electromagnetism"]
485
+ },
486
+ {
487
+ id: "electric-field",
488
+ name: "\u7535\u573A\u5F3A\u5EA6",
489
+ latex: "\\vec{E} = \\frac{\\vec{F}}{q}",
490
+ category: "physics",
491
+ description: "\u7535\u573A\u5F3A\u5EA6\u5B9A\u4E49",
492
+ tags: ["electrostatics", "electromagnetism"]
493
+ },
494
+ {
495
+ id: "gauss-law",
496
+ name: "\u9AD8\u65AF\u5B9A\u5F8B",
497
+ latex: "\\oint \\vec{E} \\cdot d\\vec{A} = \\frac{Q_{\\text{enc}}}{\\varepsilon_0}",
498
+ category: "physics",
499
+ description: "\u9AD8\u65AF\u5B9A\u5F8B\uFF08\u7535\u573A\uFF09",
500
+ tags: ["maxwell", "electrostatics", "electromagnetism"]
501
+ },
502
+ {
503
+ id: "magnetic-flux",
504
+ name: "\u78C1\u901A\u91CF",
505
+ latex: "\\Phi_B = \\int \\vec{B} \\cdot d\\vec{A}",
506
+ category: "physics",
507
+ description: "\u78C1\u901A\u91CF\u5B9A\u4E49",
508
+ tags: ["magnetism", "electromagnetism"]
509
+ },
510
+ {
511
+ id: "maxwell-faraday",
512
+ name: "\u6CD5\u62C9\u7B2C\u7535\u78C1\u611F\u5E94",
513
+ latex: "\\mathcal{E} = -\\frac{d\\Phi_B}{dt}",
514
+ category: "physics",
515
+ description: "\u6CD5\u62C9\u7B2C\u7535\u78C1\u611F\u5E94\u5B9A\u5F8B",
516
+ tags: ["maxwell", "electromagnetism", "induction"]
292
517
  },
518
+ {
519
+ id: "ampere-law",
520
+ name: "\u5B89\u57F9\u73AF\u8DEF\u5B9A\u7406",
521
+ latex: "\\oint \\vec{B} \\cdot d\\vec{l} = \\mu_0 I_{\\text{enc}}",
522
+ category: "physics",
523
+ description: "\u5B89\u57F9\u73AF\u8DEF\u5B9A\u7406",
524
+ tags: ["maxwell", "magnetism", "electromagnetism"]
525
+ },
526
+ {
527
+ id: "lorentz-force",
528
+ name: "\u6D1B\u4F26\u5179\u529B",
529
+ latex: "\\vec{F} = q(\\vec{E} + \\vec{v} \\times \\vec{B})",
530
+ category: "physics",
531
+ description: "\u6D1B\u4F26\u5179\u529B\u516C\u5F0F",
532
+ tags: ["electromagnetism", "lorentz"]
533
+ },
534
+ {
535
+ id: "ohm-law",
536
+ name: "\u6B27\u59C6\u5B9A\u5F8B",
537
+ latex: "V = I R",
538
+ category: "physics",
539
+ description: "\u6B27\u59C6\u5B9A\u5F8B",
540
+ tags: ["circuit", "electromagnetism"]
541
+ },
542
+ {
543
+ id: "joule-heating",
544
+ name: "\u7126\u8033\u5B9A\u5F8B",
545
+ latex: "P = I^{2} R",
546
+ category: "physics",
547
+ description: "\u7126\u8033\u5B9A\u5F8B\uFF08\u7535\u963B\u53D1\u70ED\u529F\u7387\uFF09",
548
+ tags: ["circuit", "electromagnetism"]
549
+ },
550
+ {
551
+ id: "capacitor-energy",
552
+ name: "\u7535\u5BB9\u5668\u80FD\u91CF",
553
+ latex: "E = \\frac{1}{2} C V^{2} = \\frac{Q^{2}}{2C}",
554
+ category: "physics",
555
+ description: "\u7535\u5BB9\u5668\u50A8\u5B58\u7684\u7535\u80FD",
556
+ tags: ["circuit", "electromagnetism"]
557
+ },
558
+ {
559
+ id: "inductor-energy",
560
+ name: "\u7535\u611F\u80FD\u91CF",
561
+ latex: "E = \\frac{1}{2} L I^{2}",
562
+ category: "physics",
563
+ description: "\u7535\u611F\u50A8\u5B58\u7684\u78C1\u80FD",
564
+ tags: ["circuit", "electromagnetism"]
565
+ },
566
+ {
567
+ id: "capacitance",
568
+ name: "\u7535\u5BB9\u5B9A\u4E49",
569
+ latex: "C = \\frac{Q}{V}",
570
+ category: "physics",
571
+ description: "\u7535\u5BB9\u5B9A\u4E49",
572
+ tags: ["circuit", "electromagnetism"]
573
+ },
574
+ // --------------------------------------------------------------------------
575
+ // 热力学 (Thermodynamics)
576
+ // --------------------------------------------------------------------------
577
+ {
578
+ id: "ideal-gas-law",
579
+ name: "\u7406\u60F3\u6C14\u4F53\u72B6\u6001\u65B9\u7A0B",
580
+ latex: "PV = nRT",
581
+ category: "physics",
582
+ description: "\u7406\u60F3\u6C14\u4F53\u72B6\u6001\u65B9\u7A0B",
583
+ tags: ["thermodynamics", "gas"]
584
+ },
585
+ {
586
+ id: "first-law-thermo",
587
+ name: "\u70ED\u529B\u5B66\u7B2C\u4E00\u5B9A\u5F8B",
588
+ latex: "\\Delta U = Q - W",
589
+ category: "physics",
590
+ description: "\u70ED\u529B\u5B66\u7B2C\u4E00\u5B9A\u5F8B\uFF08\u5185\u80FD\u53D8\u5316 = \u5438\u70ED - \u5BF9\u5916\u505A\u529F\uFF09",
591
+ tags: ["thermodynamics", "energy"]
592
+ },
593
+ {
594
+ id: "entropy-def",
595
+ name: "\u71B5\u53D8\u5B9A\u4E49",
596
+ latex: "\\Delta S = \\int \\frac{dQ_{\\text{rev}}}{T}",
597
+ category: "physics",
598
+ description: "\u71B5\u53D8\u5B9A\u4E49\uFF08\u53EF\u9006\u8FC7\u7A0B\uFF09",
599
+ tags: ["thermodynamics", "entropy"]
600
+ },
601
+ {
602
+ id: "carnot-efficiency",
603
+ name: "\u5361\u8BFA\u6548\u7387",
604
+ latex: "\\eta = 1 - \\frac{T_C}{T_H}",
605
+ category: "physics",
606
+ description: "\u5361\u8BFA\u70ED\u673A\u6548\u7387",
607
+ tags: ["thermodynamics", "carnot"]
608
+ },
609
+ {
610
+ id: "thermal-expansion",
611
+ name: "\u70ED\u81A8\u80C0",
612
+ latex: "\\Delta L = \\alpha L_0 \\Delta T",
613
+ category: "physics",
614
+ description: "\u7EBF\u81A8\u80C0\u516C\u5F0F",
615
+ tags: ["thermodynamics", "expansion"]
616
+ },
617
+ {
618
+ id: "heat-capacity",
619
+ name: "\u70ED\u5BB9\u91CF",
620
+ latex: "Q = mc\\Delta T",
621
+ category: "physics",
622
+ description: "\u70ED\u5BB9\u91CF\u4E0E\u6BD4\u70ED\u5BB9",
623
+ tags: ["thermodynamics", "heat"]
624
+ },
625
+ {
626
+ id: "stefan-boltzmann",
627
+ name: "\u65AF\u7279\u85E9-\u73BB\u5C14\u5179\u66FC\u5B9A\u5F8B",
628
+ latex: "P = \\sigma A T^{4}",
629
+ category: "physics",
630
+ description: "\u9ED1\u4F53\u8F90\u5C04\u603B\u529F\u7387",
631
+ tags: ["thermodynamics", "radiation"]
632
+ },
633
+ // --------------------------------------------------------------------------
634
+ // 量子力学 (Quantum Mechanics)
635
+ // --------------------------------------------------------------------------
293
636
  {
294
637
  id: "schrodinger",
295
638
  name: "\u859B\u5B9A\u8C14\u65B9\u7A0B",
@@ -299,20 +642,299 @@ var PHYSICS_TEMPLATES = [
299
642
  tags: ["quantum", "schrodinger"]
300
643
  },
301
644
  {
302
- id: "maxwell-faraday",
303
- name: "\u6CD5\u62C9\u7B2C\u5B9A\u5F8B",
304
- latex: "\\nabla \\times \\vec{E} = -\\frac{\\partial\\vec{B}}{\\partial t}",
645
+ id: "schrodinger-tise",
646
+ name: "\u5B9A\u6001\u859B\u5B9A\u8C14\u65B9\u7A0B",
647
+ latex: "\\hat{H} \\psi = E \\psi",
305
648
  category: "physics",
306
- description: "\u9EA6\u514B\u65AF\u97E6-\u6CD5\u62C9\u7B2C\u65B9\u7A0B",
307
- tags: ["maxwell", "electromagnetism"]
649
+ description: "\u5B9A\u6001\uFF08\u4E0D\u542B\u65F6\uFF09\u859B\u5B9A\u8C14\u65B9\u7A0B",
650
+ tags: ["quantum", "schrodinger"]
651
+ },
652
+ {
653
+ id: "uncertainty-principle",
654
+ name: "\u4E0D\u786E\u5B9A\u6027\u539F\u7406",
655
+ latex: "\\Delta x \\cdot \\Delta p \\geq \\frac{\\hbar}{2}",
656
+ category: "physics",
657
+ description: "\u6D77\u68EE\u5821\u4E0D\u786E\u5B9A\u6027\u539F\u7406",
658
+ tags: ["quantum", "heisenberg"]
659
+ },
660
+ {
661
+ id: "debroglie",
662
+ name: "\u5FB7\u5E03\u7F57\u610F\u6CE2\u957F",
663
+ latex: "\\lambda = \\frac{h}{p} = \\frac{h}{mv}",
664
+ category: "physics",
665
+ description: "\u5FB7\u5E03\u7F57\u610F\u7269\u8D28\u6CE2",
666
+ tags: ["quantum", "wave-particle"]
308
667
  },
668
+ {
669
+ id: "photoelectric",
670
+ name: "\u5149\u7535\u6548\u5E94",
671
+ latex: "E_k = h\\nu - W_0",
672
+ category: "physics",
673
+ description: "\u5149\u7535\u6548\u5E94\u65B9\u7A0B\uFF08\u7231\u56E0\u65AF\u5766\uFF09",
674
+ tags: ["quantum", "photon", "photoelectric"]
675
+ },
676
+ {
677
+ id: "commutator-xp",
678
+ name: "\u4F4D\u7F6E-\u52A8\u91CF\u5BF9\u6613\u5173\u7CFB",
679
+ latex: "[\\hat{x}, \\hat{p}] = i\\hbar",
680
+ category: "physics",
681
+ description: "\u6B63\u5219\u5BF9\u6613\u5173\u7CFB",
682
+ tags: ["quantum", "commutator"]
683
+ },
684
+ {
685
+ id: "bohr-model",
686
+ name: "\u73BB\u5C14\u6C22\u539F\u5B50\u6A21\u578B",
687
+ latex: "E_n = -\\frac{13.6 \\ \\text{eV}}{n^{2}}",
688
+ category: "physics",
689
+ description: "\u73BB\u5C14\u6C22\u539F\u5B50\u80FD\u7EA7",
690
+ tags: ["quantum", "atom", "bohr"]
691
+ },
692
+ {
693
+ id: "pauli-exclusion",
694
+ name: "\u6CE1\u5229\u4E0D\u76F8\u5BB9\u539F\u7406",
695
+ latex: "\\Psi(1,2) = -\\Psi(2,1)",
696
+ category: "physics",
697
+ description: "\u6CE1\u5229\u4E0D\u76F8\u5BB9\u539F\u7406\uFF08\u8D39\u7C73\u5B50\u53CD\u5BF9\u79F0\u6CE2\u51FD\u6570\uFF09",
698
+ tags: ["quantum", "pauli"]
699
+ },
700
+ {
701
+ id: "harmonic-oscillator",
702
+ name: "\u91CF\u5B50\u8C10\u632F\u5B50",
703
+ latex: "E_n = \\hbar \\omega \\left(n + \\frac{1}{2}\\right)",
704
+ category: "physics",
705
+ description: "\u4E00\u7EF4\u91CF\u5B50\u8C10\u632F\u5B50\u80FD\u7EA7",
706
+ tags: ["quantum", "oscillator"]
707
+ },
708
+ {
709
+ id: "potential-well",
710
+ name: "\u65E0\u9650\u6DF1\u52BF\u9631",
711
+ latex: "E_n = \\frac{n^{2} \\pi^{2} \\hbar^{2}}{2 m L^{2}}",
712
+ category: "physics",
713
+ description: "\u4E00\u7EF4\u65E0\u9650\u6DF1\u65B9\u52BF\u9631\u80FD\u7EA7",
714
+ tags: ["quantum", "potential-well"]
715
+ },
716
+ // --------------------------------------------------------------------------
717
+ // 相对论 (Relativity)
718
+ // --------------------------------------------------------------------------
719
+ {
720
+ id: "einstein-emc2",
721
+ name: "\u8D28\u80FD\u65B9\u7A0B",
722
+ latex: "E = mc^{2}",
723
+ category: "physics",
724
+ description: "\u7231\u56E0\u65AF\u5766\u8D28\u80FD\u65B9\u7A0B",
725
+ tags: ["relativity", "einstein", "energy", "mass"]
726
+ },
727
+ {
728
+ id: "lorentz-transform",
729
+ name: "\u6D1B\u4F26\u5179\u53D8\u6362",
730
+ latex: "x' = \\gamma(x - vt), \\; t' = \\gamma\\left(t - \\frac{vx}{c^{2}}\\right)",
731
+ category: "physics",
732
+ description: "\u6D1B\u4F26\u5179\u5750\u6807\u53D8\u6362",
733
+ tags: ["relativity", "lorentz"]
734
+ },
735
+ {
736
+ id: "time-dilation",
737
+ name: "\u65F6\u95F4\u81A8\u80C0",
738
+ latex: "\\Delta t = \\frac{\\Delta t_0}{\\sqrt{1 - v^{2}/c^{2}}}",
739
+ category: "physics",
740
+ description: "\u76F8\u5BF9\u8BBA\u65F6\u95F4\u81A8\u80C0",
741
+ tags: ["relativity", "time"]
742
+ },
743
+ {
744
+ id: "length-contraction",
745
+ name: "\u957F\u5EA6\u6536\u7F29",
746
+ latex: "L = L_0 \\sqrt{1 - \\frac{v^{2}}{c^{2}}}",
747
+ category: "physics",
748
+ description: "\u76F8\u5BF9\u8BBA\u957F\u5EA6\u6536\u7F29",
749
+ tags: ["relativity", "length"]
750
+ },
751
+ {
752
+ id: "energy-momentum",
753
+ name: "\u80FD\u91CF-\u52A8\u91CF\u5173\u7CFB",
754
+ latex: "E^{2} = (pc)^{2} + (mc^{2})^{2}",
755
+ category: "physics",
756
+ description: "\u76F8\u5BF9\u8BBA\u80FD\u91CF-\u52A8\u91CF\u5173\u7CFB",
757
+ tags: ["relativity", "energy", "momentum"]
758
+ },
759
+ {
760
+ id: "velocity-addition",
761
+ name: "\u76F8\u5BF9\u8BBA\u901F\u5EA6\u53E0\u52A0",
762
+ latex: "u = \\frac{u' + v}{1 + \\frac{u' v}{c^{2}}}",
763
+ category: "physics",
764
+ description: "\u76F8\u5BF9\u8BBA\u901F\u5EA6\u53E0\u52A0\u516C\u5F0F",
765
+ tags: ["relativity", "velocity"]
766
+ },
767
+ {
768
+ id: "lorentz-factor",
769
+ name: "\u6D1B\u4F26\u5179\u56E0\u5B50",
770
+ latex: "\\gamma = \\frac{1}{\\sqrt{1 - v^{2}/c^{2}}}",
771
+ category: "physics",
772
+ description: "\u6D1B\u4F26\u5179\u56E0\u5B50 \u03B3",
773
+ tags: ["relativity", "lorentz"]
774
+ },
775
+ // --------------------------------------------------------------------------
776
+ // 万有引力与天体物理 (Gravitation & Astrophysics)
777
+ // --------------------------------------------------------------------------
309
778
  {
310
779
  id: "gravitation",
311
- name: "\u4E07\u6709\u5F15\u529B",
780
+ name: "\u4E07\u6709\u5F15\u529B\u5B9A\u5F8B",
312
781
  latex: "F = G \\frac{m_1 m_2}{r^{2}}",
313
782
  category: "physics",
314
783
  description: "\u725B\u987F\u4E07\u6709\u5F15\u529B\u5B9A\u5F8B",
315
- tags: ["newton", "gravitation"]
784
+ tags: ["gravitation", "newton", "mechanics"]
785
+ },
786
+ {
787
+ id: "kepler-3rd",
788
+ name: "\u5F00\u666E\u52D2\u7B2C\u4E09\u5B9A\u5F8B",
789
+ latex: "\\frac{T^{2}}{a^{3}} = \\frac{4\\pi^{2}}{GM}",
790
+ category: "physics",
791
+ description: "\u5F00\u666E\u52D2\u7B2C\u4E09\u5B9A\u5F8B",
792
+ tags: ["gravitation", "kepler", "orbit"]
793
+ },
794
+ {
795
+ id: "escape-velocity",
796
+ name: "\u9003\u9038\u901F\u5EA6",
797
+ latex: "v_{\\text{esc}} = \\sqrt{\\frac{2GM}{R}}",
798
+ category: "physics",
799
+ description: "\u5929\u4F53\u9003\u9038\u901F\u5EA6",
800
+ tags: ["gravitation", "escape"]
801
+ },
802
+ {
803
+ id: "orbital-velocity",
804
+ name: "\u8F68\u9053\u901F\u5EA6",
805
+ latex: "v = \\sqrt{\\frac{GM}{r}}",
806
+ category: "physics",
807
+ description: "\u5706\u8F68\u9053\u73AF\u7ED5\u901F\u5EA6",
808
+ tags: ["gravitation", "orbit"]
809
+ },
810
+ // --------------------------------------------------------------------------
811
+ // 光学 (Optics)
812
+ // --------------------------------------------------------------------------
813
+ {
814
+ id: "snell-law",
815
+ name: "\u65AF\u6D85\u5C14\u6298\u5C04\u5B9A\u5F8B",
816
+ latex: "n_1 \\sin\\theta_1 = n_2 \\sin\\theta_2",
817
+ category: "physics",
818
+ description: "\u65AF\u6D85\u5C14\u6298\u5C04\u5B9A\u5F8B",
819
+ tags: ["optics", "refraction"]
820
+ },
821
+ {
822
+ id: "lens-equation",
823
+ name: "\u900F\u955C\u516C\u5F0F",
824
+ latex: "\\frac{1}{f} = \\frac{1}{d_o} + \\frac{1}{d_i}",
825
+ category: "physics",
826
+ description: "\u8584\u900F\u955C\u65B9\u7A0B",
827
+ tags: ["optics", "lens"]
828
+ },
829
+ {
830
+ id: "young-double-slit",
831
+ name: "\u6768\u6C0F\u53CC\u7F1D\u5E72\u6D89",
832
+ latex: "d \\sin\\theta = m \\lambda",
833
+ category: "physics",
834
+ description: "\u6768\u6C0F\u53CC\u7F1D\u5E72\u6D89\uFF08\u660E\u7EB9\u6761\u4EF6\uFF09",
835
+ tags: ["optics", "interference"]
836
+ },
837
+ {
838
+ id: "diffraction-grating",
839
+ name: "\u5149\u6805\u65B9\u7A0B",
840
+ latex: "d \\sin\\theta = k \\lambda",
841
+ category: "physics",
842
+ description: "\u884D\u5C04\u5149\u6805\u65B9\u7A0B",
843
+ tags: ["optics", "diffraction"]
844
+ },
845
+ {
846
+ id: "brewster-angle",
847
+ name: "\u5E03\u5112\u65AF\u7279\u89D2",
848
+ latex: "\\tan\\theta_B = \\frac{n_2}{n_1}",
849
+ category: "physics",
850
+ description: "\u5E03\u5112\u65AF\u7279\u89D2\uFF08\u504F\u632F\uFF09",
851
+ tags: ["optics", "polarization"]
852
+ },
853
+ {
854
+ id: "malus-law",
855
+ name: "\u9A6C\u5415\u65AF\u5B9A\u5F8B",
856
+ latex: "I = I_0 \\cos^{2}\\theta",
857
+ category: "physics",
858
+ description: "\u9A6C\u5415\u65AF\u5B9A\u5F8B\uFF08\u504F\u632F\u5149\u5F3A\u5EA6\uFF09",
859
+ tags: ["optics", "polarization"]
860
+ },
861
+ // --------------------------------------------------------------------------
862
+ // 核物理 (Nuclear Physics)
863
+ // --------------------------------------------------------------------------
864
+ {
865
+ id: "radioactive-decay",
866
+ name: "\u653E\u5C04\u6027\u8870\u53D8\u5B9A\u5F8B",
867
+ latex: "N(t) = N_0 e^{-\\lambda t}",
868
+ category: "physics",
869
+ description: "\u653E\u5C04\u6027\u8870\u53D8\u5B9A\u5F8B\uFF08\u6307\u6570\u8870\u53D8\uFF09",
870
+ tags: ["nuclear", "decay"]
871
+ },
872
+ {
873
+ id: "half-life",
874
+ name: "\u534A\u8870\u671F",
875
+ latex: "t_{1/2} = \\frac{\\ln 2}{\\lambda}",
876
+ category: "physics",
877
+ description: "\u653E\u5C04\u6027\u534A\u8870\u671F",
878
+ tags: ["nuclear", "decay"]
879
+ },
880
+ {
881
+ id: "binding-energy",
882
+ name: "\u7ED3\u5408\u80FD",
883
+ latex: "E_B = [Zm_p + (A-Z)m_n - M]c^{2}",
884
+ category: "physics",
885
+ description: "\u539F\u5B50\u6838\u7ED3\u5408\u80FD",
886
+ tags: ["nuclear", "binding"]
887
+ },
888
+ {
889
+ id: "nuclear-reaction",
890
+ name: "\u6838\u53CD\u5E94 Q \u503C",
891
+ latex: "Q = (M_i - M_f)c^{2}",
892
+ category: "physics",
893
+ description: "\u6838\u53CD\u5E94\u91CA\u653E/\u5438\u6536\u7684\u80FD\u91CF",
894
+ tags: ["nuclear", "reaction"]
895
+ },
896
+ // --------------------------------------------------------------------------
897
+ // 流体力学 (Fluid Mechanics)
898
+ // --------------------------------------------------------------------------
899
+ {
900
+ id: "bernoulli",
901
+ name: "\u4F2F\u52AA\u5229\u65B9\u7A0B",
902
+ latex: "P + \\frac{1}{2}\\rho v^{2} + \\rho g h = \\text{const}",
903
+ category: "physics",
904
+ description: "\u4F2F\u52AA\u5229\u65B9\u7A0B\uFF08\u7406\u60F3\u6D41\u4F53\uFF09",
905
+ tags: ["fluid", "bernoulli"]
906
+ },
907
+ {
908
+ id: "continuity",
909
+ name: "\u8FDE\u7EED\u6027\u65B9\u7A0B",
910
+ latex: "A_1 v_1 = A_2 v_2",
911
+ category: "physics",
912
+ description: "\u6D41\u4F53\u8FDE\u7EED\u6027\u65B9\u7A0B",
913
+ tags: ["fluid", "continuity"]
914
+ },
915
+ {
916
+ id: "archimedes",
917
+ name: "\u963F\u57FA\u7C73\u5FB7\u539F\u7406",
918
+ latex: "F_B = \\rho_f g V_{\\text{disp}}",
919
+ category: "physics",
920
+ description: "\u963F\u57FA\u7C73\u5FB7\u6D6E\u529B\u539F\u7406",
921
+ tags: ["fluid", "buoyancy"]
922
+ },
923
+ {
924
+ id: "stokes-law",
925
+ name: "Stokes \u963B\u529B\u5B9A\u5F8B",
926
+ latex: "F_d = 6\\pi \\eta r v",
927
+ category: "physics",
928
+ description: "Stokes \u963B\u529B\u516C\u5F0F\uFF08\u4F4E\u901F\u5C0F\u7403\uFF09",
929
+ tags: ["fluid", "drag"]
930
+ },
931
+ {
932
+ id: "reynolds-number",
933
+ name: "\u96F7\u8BFA\u6570",
934
+ latex: "Re = \\frac{\\rho v L}{\\eta}",
935
+ category: "physics",
936
+ description: "\u96F7\u8BFA\u6570\uFF08\u5224\u65AD\u5C42\u6D41/\u6E4D\u6D41\uFF09",
937
+ tags: ["fluid", "reynolds"]
316
938
  }
317
939
  ];
318
940
  var ALL_MATH_TEMPLATES = [
@@ -338,26 +960,65 @@ function getTemplateById(id) {
338
960
 
339
961
  // src/chem-templates.ts
340
962
  var COMPOUND_TEMPLATES = [
341
- // 无机酸
963
+ // --- 单质 & 常见气体 ---
964
+ { id: "o2", name: "\u6C27\u6C14", latex: "\\ce{O2}", category: "compound", description: "\u6C27\u6C14", tags: ["gas", "diatomic", "oxidizing"] },
965
+ { id: "n2", name: "\u6C2E\u6C14", latex: "\\ce{N2}", category: "compound", description: "\u6C2E\u6C14", tags: ["gas", "diatomic", "inert"] },
966
+ { id: "cl2", name: "\u6C2F\u6C14", latex: "\\ce{Cl2}", category: "compound", description: "\u6C2F\u6C14", tags: ["gas", "halogen", "toxic", "oxidizing"] },
967
+ // --- 氧化物 ---
342
968
  { id: "h2o", name: "\u6C34", latex: "\\ce{H2O}", category: "compound", description: "\u6C34", tags: ["water", "inorganic"] },
969
+ { id: "co2", name: "\u4E8C\u6C27\u5316\u78B3", latex: "\\ce{CO2}", category: "compound", description: "\u4E8C\u6C27\u5316\u78B3", tags: ["oxide", "gas"] },
970
+ { id: "co", name: "\u4E00\u6C27\u5316\u78B3", latex: "\\ce{CO}", category: "compound", description: "\u4E00\u6C27\u5316\u78B3", tags: ["oxide", "gas", "toxic", "reducing"] },
971
+ { id: "so2", name: "\u4E8C\u6C27\u5316\u786B", latex: "\\ce{SO2}", category: "compound", description: "\u4E8C\u6C27\u5316\u786B", tags: ["oxide", "gas", "acid-rain"] },
972
+ { id: "cuo", name: "\u6C27\u5316\u94DC", latex: "\\ce{CuO}", category: "compound", description: "\u6C27\u5316\u94DC\uFF08\u9ED1\u8272\u56FA\u4F53\uFF09", tags: ["oxide", "copper", "solid"] },
973
+ { id: "mno2", name: "\u4E8C\u6C27\u5316\u9530", latex: "\\ce{MnO2}", category: "compound", description: "\u4E8C\u6C27\u5316\u9530\uFF08\u50AC\u5316\u5242\uFF09", tags: ["oxide", "catalyst", "solid"] },
974
+ { id: "cao", name: "\u6C27\u5316\u9499", latex: "\\ce{CaO}", category: "compound", description: "\u751F\u77F3\u7070 / \u6C27\u5316\u9499", tags: ["oxide", "industrial", "solid"] },
975
+ { id: "fe2o3", name: "\u6C27\u5316\u94C1", latex: "\\ce{Fe2O3}", category: "compound", description: "\u94C1\u9508 / \u8D64\u94C1\u77FF", tags: ["oxide", "rust"] },
976
+ { id: "al2o3", name: "\u6C27\u5316\u94DD", latex: "\\ce{Al2O3}", category: "compound", description: "\u6C27\u5316\u94DD", tags: ["oxide"] },
977
+ { id: "sio2", name: "\u4E8C\u6C27\u5316\u7845", latex: "\\ce{SiO2}", category: "compound", description: "\u77F3\u82F1 / \u4E8C\u6C27\u5316\u7845", tags: ["oxide", "quartz"] },
978
+ // --- 无机酸 ---
343
979
  { id: "h2so4", name: "\u786B\u9178", latex: "\\ce{H2SO4}", category: "compound", description: "\u786B\u9178", tags: ["acid", "strong"] },
344
980
  { id: "hcl", name: "\u76D0\u9178", latex: "\\ce{HCl}", category: "compound", description: "\u76D0\u9178 / \u6C2F\u5316\u6C22", tags: ["acid", "strong"] },
345
981
  { id: "hno3", name: "\u785D\u9178", latex: "\\ce{HNO3}", category: "compound", description: "\u785D\u9178", tags: ["acid", "strong"] },
346
982
  { id: "h3po4", name: "\u78F7\u9178", latex: "\\ce{H3PO4}", category: "compound", description: "\u78F7\u9178", tags: ["acid"] },
983
+ { id: "h2co3", name: "\u78B3\u9178", latex: "\\ce{H2CO3}", category: "compound", description: "\u78B3\u9178\uFF08\u4E0D\u7A33\u5B9A\uFF09", tags: ["acid", "weak", "unstable"] },
984
+ { id: "h2s", name: "\u786B\u5316\u6C22", latex: "\\ce{H2S}", category: "compound", description: "\u786B\u5316\u6C22\uFF08\u81ED\u9E21\u86CB\u5473\uFF09", tags: ["acid", "weak", "gas", "toxic"] },
985
+ // --- 碱 ---
347
986
  { id: "naoh", name: "\u6C22\u6C27\u5316\u94A0", latex: "\\ce{NaOH}", category: "compound", description: "\u6C22\u6C27\u5316\u94A0 / \u70E7\u78B1", tags: ["base", "strong"] },
348
987
  { id: "caoh2", name: "\u6C22\u6C27\u5316\u9499", latex: "\\ce{Ca(OH)2}", category: "compound", description: "\u6C22\u6C27\u5316\u9499 / \u719F\u77F3\u7070", tags: ["base"] },
349
- //
988
+ { id: "cuoh2", name: "\u6C22\u6C27\u5316\u94DC", latex: "\\ce{Cu(OH)2}", category: "compound", description: "\u6C22\u6C27\u5316\u94DC\uFF08\u84DD\u8272\u6C89\u6DC0\uFF09", tags: ["base", "precipitate", "copper"] },
989
+ { id: "feoh3", name: "\u6C22\u6C27\u5316\u94C1", latex: "\\ce{Fe(OH)3}", category: "compound", description: "\u6C22\u6C27\u5316\u94C1\uFF08\u7EA2\u8910\u8272\u6C89\u6DC0\uFF09", tags: ["base", "precipitate", "iron"] },
990
+ { id: "feoh2", name: "\u6C22\u6C27\u5316\u4E9A\u94C1", latex: "\\ce{Fe(OH)2}", category: "compound", description: "\u6C22\u6C27\u5316\u4E9A\u94C1\uFF08\u767D\u8272\u6C89\u6DC0\uFF09", tags: ["base", "precipitate", "iron", "unstable"] },
991
+ // --- 盐 — 氯化物 ---
350
992
  { id: "nacl", name: "\u6C2F\u5316\u94A0", latex: "\\ce{NaCl}", category: "compound", description: "\u98DF\u76D0 / \u6C2F\u5316\u94A0", tags: ["salt", "table"] },
993
+ { id: "nh4cl", name: "\u6C2F\u5316\u94F5", latex: "\\ce{NH4Cl}", category: "compound", description: "\u6C2F\u5316\u94F5", tags: ["salt", "ammonium"] },
994
+ { id: "cacl2", name: "\u6C2F\u5316\u9499", latex: "\\ce{CaCl2}", category: "compound", description: "\u6C2F\u5316\u9499\uFF08\u5E72\u71E5\u5242\uFF09", tags: ["salt", "calcium", "desiccant"] },
995
+ { id: "zncl2", name: "\u6C2F\u5316\u950C", latex: "\\ce{ZnCl2}", category: "compound", description: "\u6C2F\u5316\u950C", tags: ["salt", "zinc"] },
996
+ { id: "fecl2", name: "\u6C2F\u5316\u4E9A\u94C1", latex: "\\ce{FeCl2}", category: "compound", description: "\u6C2F\u5316\u4E9A\u94C1", tags: ["salt", "iron", "low-valence"] },
997
+ { id: "mgcl2", name: "\u6C2F\u5316\u9541", latex: "\\ce{MgCl2}", category: "compound", description: "\u6C2F\u5316\u9541", tags: ["salt", "magnesium"] },
998
+ { id: "alcl3", name: "\u6C2F\u5316\u94DD", latex: "\\ce{AlCl3}", category: "compound", description: "\u6C2F\u5316\u94DD", tags: ["salt", "aluminum"] },
999
+ { id: "bacl2", name: "\u6C2F\u5316\u94A1", latex: "\\ce{BaCl2}", category: "compound", description: "\u6C2F\u5316\u94A1\uFF08\u6709\u6BD2\uFF09", tags: ["salt", "barium", "toxic"] },
1000
+ // --- 盐 — 硫酸盐 ---
1001
+ { id: "caso4", name: "\u786B\u9178\u9499", latex: "\\ce{CaSO4}", category: "compound", description: "\u77F3\u818F", tags: ["salt", "gypsum"] },
1002
+ { id: "cuso4", name: "\u786B\u9178\u94DC", latex: "\\ce{CuSO4}", category: "compound", description: "\u786B\u9178\u94DC / \u84DD\u77FE", tags: ["salt", "copper", "blue"] },
1003
+ { id: "feso4", name: "\u786B\u9178\u4E9A\u94C1", latex: "\\ce{FeSO4}", category: "compound", description: "\u786B\u9178\u4E9A\u94C1\uFF08\u6D45\u7EFF\u8272\uFF09", tags: ["salt", "iron", "low-valence"] },
1004
+ { id: "znso4", name: "\u786B\u9178\u950C", latex: "\\ce{ZnSO4}", category: "compound", description: "\u786B\u9178\u950C", tags: ["salt", "zinc"] },
1005
+ { id: "mgso4", name: "\u786B\u9178\u9541", latex: "\\ce{MgSO4}", category: "compound", description: "\u786B\u9178\u9541", tags: ["salt", "magnesium"] },
1006
+ { id: "al2so43", name: "\u786B\u9178\u94DD", latex: "\\ce{Al2(SO4)3}", category: "compound", description: "\u786B\u9178\u94DD", tags: ["salt", "aluminum"] },
1007
+ { id: "na2so4", name: "\u786B\u9178\u94A0", latex: "\\ce{Na2SO4}", category: "compound", description: "\u786B\u9178\u94A0", tags: ["salt", "sodium"] },
1008
+ // --- 盐 — 硝酸盐 ---
1009
+ { id: "agno3", name: "\u785D\u9178\u94F6", latex: "\\ce{AgNO3}", category: "compound", description: "\u785D\u9178\u94F6", tags: ["salt", "silver", "nitrate"] },
1010
+ { id: "cuno32", name: "\u785D\u9178\u94DC", latex: "\\ce{Cu(NO3)2}", category: "compound", description: "\u785D\u9178\u94DC", tags: ["salt", "copper", "nitrate"] },
1011
+ // --- 盐 — 碳酸盐/其他 ---
351
1012
  { id: "na2co3", name: "\u78B3\u9178\u94A0", latex: "\\ce{Na2CO3}", category: "compound", description: "\u7EAF\u78B1 / \u78B3\u9178\u94A0", tags: ["salt", "soda"] },
352
1013
  { id: "nahco3", name: "\u78B3\u9178\u6C22\u94A0", latex: "\\ce{NaHCO3}", category: "compound", description: "\u5C0F\u82CF\u6253", tags: ["salt", "baking"] },
353
1014
  { id: "caco3", name: "\u78B3\u9178\u9499", latex: "\\ce{CaCO3}", category: "compound", description: "\u77F3\u7070\u77F3 / \u5927\u7406\u77F3", tags: ["salt", "limestone"] },
354
- { id: "caso4", name: "\u786B\u9178\u9499", latex: "\\ce{CaSO4}", category: "compound", description: "\u77F3\u818F", tags: ["salt", "gypsum"] },
355
- // 氧化物
356
- { id: "co2", name: "\u4E8C\u6C27\u5316\u78B3", latex: "\\ce{CO2}", category: "compound", description: "\u4E8C\u6C27\u5316\u78B3", tags: ["oxide", "gas"] },
357
- { id: "fe2o3", name: "\u6C27\u5316\u94C1", latex: "\\ce{Fe2O3}", category: "compound", description: "\u94C1\u9508 / \u8D64\u94C1\u77FF", tags: ["oxide", "rust"] },
358
- { id: "al2o3", name: "\u6C27\u5316\u94DD", latex: "\\ce{Al2O3}", category: "compound", description: "\u6C27\u5316\u94DD", tags: ["oxide"] },
359
- { id: "sio2", name: "\u4E8C\u6C27\u5316\u7845", latex: "\\ce{SiO2}", category: "compound", description: "\u77F3\u82F1 / \u4E8C\u6C27\u5316\u7845", tags: ["oxide", "quartz"] },
360
- // 有机物
1015
+ { id: "cahco32", name: "\u78B3\u9178\u6C22\u9499", latex: "\\ce{Ca(HCO3)2}", category: "compound", description: "\u78B3\u9178\u6C22\u9499", tags: ["salt", "bicarbonate", "calcium"] },
1016
+ { id: "kmno4", name: "\u9AD8\u9530\u9178\u94BE", latex: "\\ce{KMnO4}", category: "compound", description: "\u9AD8\u9530\u9178\u94BE\uFF08\u7D2B\u8272\uFF09", tags: ["salt", "oxidizing", "purple"] },
1017
+ { id: "kclo3", name: "\u6C2F\u9178\u94BE", latex: "\\ce{KClO3}", category: "compound", description: "\u6C2F\u9178\u94BE\uFF08\u5236\u6C27\u6C14\uFF09", tags: ["salt", "oxidizing", "chlorate"] },
1018
+ // --- 其他无机物 ---
1019
+ { id: "nh3", name: "\u6C28\u6C14", latex: "\\ce{NH3}", category: "compound", description: "\u6C28\u6C14\uFF08\u523A\u6FC0\u6027\u6C14\u5473\uFF09", tags: ["gas", "ammonia", "base"] },
1020
+ { id: "h2o2", name: "\u8FC7\u6C27\u5316\u6C22", latex: "\\ce{H2O2}", category: "compound", description: "\u53CC\u6C27\u6C34 / \u8FC7\u6C27\u5316\u6C22", tags: ["peroxide", "oxidizing", "liquid"] },
1021
+ // --- 有机物 ---
361
1022
  { id: "ch4", name: "\u7532\u70F7", latex: "\\ce{CH4}", category: "compound", description: "\u7532\u70F7 / \u5929\u7136\u6C14", tags: ["organic", "alkane"] },
362
1023
  { id: "c2h5oh", name: "\u4E59\u9187", latex: "\\ce{C2H5OH}", category: "compound", description: "\u9152\u7CBE / \u4E59\u9187", tags: ["organic", "alcohol"] },
363
1024
  { id: "c6h12o6", name: "\u8461\u8404\u7CD6", latex: "\\ce{C6H12O6}", category: "compound", description: "\u8461\u8404\u7CD6", tags: ["organic", "sugar"] },
@@ -427,6 +1088,482 @@ var REACTION_TEMPLATES = [
427
1088
  category: "reaction",
428
1089
  description: "\u53EF\u9006\u53CD\u5E94\u901A\u7528\u5F0F",
429
1090
  tags: ["equilibrium", "reversible"]
1091
+ },
1092
+ // =========================================================================
1093
+ // 中学化学常见反应 (Middle School Common Reactions)
1094
+ // =========================================================================
1095
+ // --- 气体制备 & 分解 ---
1096
+ {
1097
+ id: "nh4cl-caoh2",
1098
+ name: "\u6C2F\u5316\u94F5\u4E0E\u6C22\u6C27\u5316\u9499\u53CD\u5E94",
1099
+ latex: "\\ce{2NH4Cl + Ca(OH)2 ->[\u52A0\u70ED] CaCl2 + 2NH3 ^ + 2H2O}",
1100
+ category: "reaction",
1101
+ description: "\u5B9E\u9A8C\u5BA4\u5236\u6C28\u6C14",
1102
+ tags: ["ammonia", "gas-preparation", "heating"]
1103
+ },
1104
+ {
1105
+ id: "electrolysis-water-2",
1106
+ name: "\u6C34\u5728\u901A\u7535\u6761\u4EF6\u4E0B\u5206\u89E3",
1107
+ latex: "\\ce{2H2O ->[\u901A\u7535] 2H2 ^ + O2 ^}",
1108
+ category: "reaction",
1109
+ description: "\u7535\u89E3\u6C34\u751F\u6210\u6C22\u6C14\u548C\u6C27\u6C14",
1110
+ tags: ["electrolysis", "water", "decomposition"]
1111
+ },
1112
+ {
1113
+ id: "h2co3-decomposition",
1114
+ name: "\u78B3\u9178\u4E0D\u7A33\u5B9A\u5206\u89E3",
1115
+ latex: "\\ce{H2CO3 -> H2O + CO2 ^}",
1116
+ category: "reaction",
1117
+ description: "\u78B3\u9178\u5E38\u6E29\u5206\u89E3",
1118
+ tags: ["decomposition", "acid"]
1119
+ },
1120
+ {
1121
+ id: "caco3-decomposition",
1122
+ name: "\u78B3\u9178\u9499\u9AD8\u6E29\u5206\u89E3",
1123
+ latex: "\\ce{CaCO3 ->[\u9AD8\u6E29] CaO + CO2 ^}",
1124
+ category: "reaction",
1125
+ description: "\u77F3\u7070\u77F3\u9AD8\u6E29\u7145\u70E7",
1126
+ tags: ["decomposition", "heating", "industrial"]
1127
+ },
1128
+ {
1129
+ id: "kmno4-heating",
1130
+ name: "\u52A0\u70ED\u9AD8\u9530\u9178\u94BE",
1131
+ latex: "\\ce{2KMnO4 ->[\u52A0\u70ED] K2MnO4 + MnO2 + O2 ^}",
1132
+ category: "reaction",
1133
+ description: "\u5B9E\u9A8C\u5BA4\u5236\u6C27\u6C14",
1134
+ tags: ["oxygen", "gas-preparation", "heating"]
1135
+ },
1136
+ {
1137
+ id: "kclo3-heating",
1138
+ name: "\u52A0\u70ED\u6C2F\u9178\u94BE\u548C\u4E8C\u6C27\u5316\u9530\u7684\u6DF7\u5408\u7269",
1139
+ latex: "\\ce{2KClO3 ->[MnO2][\u52A0\u70ED] 2KCl + 3O2 ^}",
1140
+ category: "reaction",
1141
+ description: "\u4E8C\u6C27\u5316\u9530\u50AC\u5316\u5206\u89E3\u6C2F\u9178\u94BE\u5236\u6C27\u6C14",
1142
+ tags: ["oxygen", "gas-preparation", "catalyst", "heating"]
1143
+ },
1144
+ {
1145
+ id: "h2o2-decomposition",
1146
+ name: "\u8FC7\u6C27\u5316\u6C22\u5728\u4E8C\u6C27\u5316\u9530\u50AC\u5316\u4E0B\u5206\u89E3",
1147
+ latex: "\\ce{2H2O2 ->[MnO2] 2H2O + O2 ^}",
1148
+ category: "reaction",
1149
+ description: "\u53CC\u6C27\u6C34\u50AC\u5316\u5206\u89E3\u5236\u6C27\u6C14",
1150
+ tags: ["oxygen", "gas-preparation", "catalyst"]
1151
+ },
1152
+ {
1153
+ id: "nahco3-heating",
1154
+ name: "\u78B3\u9178\u6C22\u94A0\u53D7\u70ED\u5206\u89E3",
1155
+ latex: "\\ce{2NaHCO3 ->[\u52A0\u70ED] Na2CO3 + H2O + CO2 ^}",
1156
+ category: "reaction",
1157
+ description: "\u5C0F\u82CF\u6253\u53D7\u70ED\u5206\u89E3",
1158
+ tags: ["decomposition", "heating", "baking"]
1159
+ },
1160
+ // --- 化合反应 ---
1161
+ {
1162
+ id: "co2-water",
1163
+ name: "\u4E8C\u6C27\u5316\u78B3\u4E0E\u6C34\u53CD\u5E94",
1164
+ latex: "\\ce{CO2 + H2O -> H2CO3}",
1165
+ category: "reaction",
1166
+ description: "\u78B3\u9178\u7684\u751F\u6210",
1167
+ tags: ["combination", "acid"]
1168
+ },
1169
+ {
1170
+ id: "co2-caoh2",
1171
+ name: "\u4E8C\u6C27\u5316\u78B3\u4E0E\u6F84\u6E05\u77F3\u7070\u6C34\u53CD\u5E94",
1172
+ latex: "\\ce{CO2 + Ca(OH)2 -> CaCO3 v + H2O}",
1173
+ category: "reaction",
1174
+ description: "\u77F3\u7070\u6C34\u53D8\u6D51\u6D4A",
1175
+ tags: ["precipitation", "co2-test"]
1176
+ },
1177
+ {
1178
+ id: "co2-caoh2-2",
1179
+ name: "\u4E8C\u6C27\u5316\u78B3\u901A\u5165\u6F84\u6E05\u77F3\u7070\u6C34",
1180
+ latex: "\\ce{CO2 + Ca(OH)2 -> CaCO3 v + H2O}",
1181
+ category: "reaction",
1182
+ description: "CO\u2082 \u68C0\u9A8C\u65B9\u6CD5",
1183
+ tags: ["precipitation", "co2-test"]
1184
+ },
1185
+ // --- 金属与盐溶液反应 ---
1186
+ {
1187
+ id: "fe-cuso4",
1188
+ name: "\u94C1\u4E0E\u786B\u9178\u94DC\u6EB6\u6DB2\u53CD\u5E94",
1189
+ latex: "\\ce{Fe + CuSO4 -> FeSO4 + Cu}",
1190
+ category: "reaction",
1191
+ description: "\u6E7F\u6CD5\u70BC\u94DC / \u94C1\u7F6E\u6362\u94DC",
1192
+ tags: ["displacement", "metal", "redox"]
1193
+ },
1194
+ {
1195
+ id: "cu-agno3",
1196
+ name: "\u94DC\u548C\u785D\u9178\u94F6\u6EB6\u6DB2\u53CD\u5E94",
1197
+ latex: "\\ce{Cu + 2AgNO3 -> Cu(NO3)2 + 2Ag}",
1198
+ category: "reaction",
1199
+ description: "\u94DC\u7F6E\u6362\u94F6",
1200
+ tags: ["displacement", "metal", "redox"]
1201
+ },
1202
+ // --- 金属与氧气反应 ---
1203
+ {
1204
+ id: "al-o2",
1205
+ name: "\u94DD\u4E0E\u6C27\u6C14\u53CD\u5E94",
1206
+ latex: "\\ce{4Al + 3O2 ->[\u70B9\u71C3] 2Al2O3}",
1207
+ category: "reaction",
1208
+ description: "\u94DD\u5728\u6C27\u6C14\u4E2D\u71C3\u70E7",
1209
+ tags: ["combustion", "metal", "oxidation"]
1210
+ },
1211
+ {
1212
+ id: "mg-o2",
1213
+ name: "\u9541\u5728\u7A7A\u6C14\u4E2D\u71C3\u70E7",
1214
+ latex: "\\ce{2Mg + O2 ->[\u70B9\u71C3] 2MgO}",
1215
+ category: "reaction",
1216
+ description: "\u9541\u5E26\u71C3\u70E7\u53D1\u51FA\u8000\u773C\u767D\u5149",
1217
+ tags: ["combustion", "metal", "oxidation"]
1218
+ },
1219
+ {
1220
+ id: "fe-o2",
1221
+ name: "\u94C1\u5728\u6C27\u6C14\u4E2D\u71C3\u70E7",
1222
+ latex: "\\ce{3Fe + 2O2 ->[\u70B9\u71C3] Fe3O4}",
1223
+ category: "reaction",
1224
+ description: "\u94C1\u4E1D\u5728\u6C27\u6C14\u4E2D\u5267\u70C8\u71C3\u70E7",
1225
+ tags: ["combustion", "metal", "oxidation"]
1226
+ },
1227
+ {
1228
+ id: "cu-o2",
1229
+ name: "\u94DC\u5728\u7A7A\u6C14\u4E2D\u53D7\u70ED",
1230
+ latex: "\\ce{2Cu + O2 ->[\u52A0\u70ED] 2CuO}",
1231
+ category: "reaction",
1232
+ description: "\u94DC\u8868\u9762\u53D8\u9ED1",
1233
+ tags: ["oxidation", "metal", "heating"]
1234
+ },
1235
+ // --- 非金属燃烧 ---
1236
+ {
1237
+ id: "p-o2",
1238
+ name: "\u7EA2\u78F7\u5728\u7A7A\u6C14\u4E2D\u71C3\u70E7",
1239
+ latex: "\\ce{4P + 5O2 ->[\u70B9\u71C3] 2P2O5}",
1240
+ category: "reaction",
1241
+ description: "\u4EA7\u751F\u5927\u91CF\u767D\u70DF",
1242
+ tags: ["combustion", "nonmetal", "oxidation"]
1243
+ },
1244
+ {
1245
+ id: "s-o2",
1246
+ name: "\u786B\u7C89\u5728\u7A7A\u6C14\u4E2D\u71C3\u70E7",
1247
+ latex: "\\ce{S + O2 ->[\u70B9\u71C3] SO2}",
1248
+ category: "reaction",
1249
+ description: "\u4EA7\u751F\u523A\u6FC0\u6027\u6C14\u5473\u6C14\u4F53",
1250
+ tags: ["combustion", "nonmetal", "oxidation"]
1251
+ },
1252
+ {
1253
+ id: "c-o2-full",
1254
+ name: "\u78B3\u5728\u6C27\u6C14\u4E2D\u5145\u5206\u71C3\u70E7",
1255
+ latex: "\\ce{C + O2 ->[\u70B9\u71C3] CO2}",
1256
+ category: "reaction",
1257
+ description: "\u78B3\u5B8C\u5168\u71C3\u70E7",
1258
+ tags: ["combustion", "nonmetal", "oxidation"]
1259
+ },
1260
+ {
1261
+ id: "c-o2-partial",
1262
+ name: "\u78B3\u5728\u6C27\u6C14\u4E2D\u4E0D\u5145\u5206\u71C3\u70E7",
1263
+ latex: "\\ce{2C + O2 ->[\u70B9\u71C3] 2CO}",
1264
+ category: "reaction",
1265
+ description: "\u78B3\u4E0D\u5B8C\u5168\u71C3\u70E7\u751F\u6210\u4E00\u6C27\u5316\u78B3",
1266
+ tags: ["combustion", "nonmetal", "incomplete"]
1267
+ },
1268
+ {
1269
+ id: "h2-o2",
1270
+ name: "\u6C22\u6C14\u5728\u6C27\u6C14\u4E2D\u71C3\u70E7",
1271
+ latex: "\\ce{2H2 + O2 ->[\u70B9\u71C3] 2H2O}",
1272
+ category: "reaction",
1273
+ description: "\u6C22\u6C14\u71C3\u70E7\u751F\u6210\u6C34",
1274
+ tags: ["combustion", "hydrogen", "clean-energy"]
1275
+ },
1276
+ {
1277
+ id: "co-o2",
1278
+ name: "\u4E00\u6C27\u5316\u78B3\u71C3\u70E7",
1279
+ latex: "\\ce{2CO + O2 ->[\u70B9\u71C3] 2CO2}",
1280
+ category: "reaction",
1281
+ description: "CO \u71C3\u70E7\u4EA7\u751F\u84DD\u8272\u706B\u7130",
1282
+ tags: ["combustion", "carbon-monoxide"]
1283
+ },
1284
+ {
1285
+ id: "ch4-combustion",
1286
+ name: "\u7532\u70F7\u71C3\u70E7",
1287
+ latex: "\\ce{CH4 + 2O2 ->[\u70B9\u71C3] CO2 + 2H2O}",
1288
+ category: "reaction",
1289
+ description: "\u5929\u7136\u6C14\u4E3B\u8981\u6210\u5206\u71C3\u70E7",
1290
+ tags: ["combustion", "organic", "alkane"]
1291
+ },
1292
+ // --- 金属与酸反应 ---
1293
+ {
1294
+ id: "zn-h2so4",
1295
+ name: "\u950C\u548C\u7A00\u786B\u9178\u53CD\u5E94",
1296
+ latex: "\\ce{Zn + H2SO4 -> ZnSO4 + H2 ^}",
1297
+ category: "reaction",
1298
+ description: "\u5B9E\u9A8C\u5BA4\u5236\u6C22\u6C14",
1299
+ tags: ["displacement", "metal-acid", "hydrogen"]
1300
+ },
1301
+ {
1302
+ id: "fe-h2so4",
1303
+ name: "\u94C1\u548C\u7A00\u786B\u9178\u53CD\u5E94",
1304
+ latex: "\\ce{Fe + H2SO4 -> FeSO4 + H2 ^}",
1305
+ category: "reaction",
1306
+ description: "\u94C1\u4E0E\u7A00\u786B\u9178\u7F6E\u6362\u53CD\u5E94",
1307
+ tags: ["displacement", "metal-acid", "hydrogen"]
1308
+ },
1309
+ {
1310
+ id: "mg-h2so4",
1311
+ name: "\u9541\u548C\u7A00\u786B\u9178\u53CD\u5E94",
1312
+ latex: "\\ce{Mg + H2SO4 -> MgSO4 + H2 ^}",
1313
+ category: "reaction",
1314
+ description: "\u9541\u4E0E\u7A00\u786B\u9178\u5267\u70C8\u53CD\u5E94",
1315
+ tags: ["displacement", "metal-acid", "hydrogen"]
1316
+ },
1317
+ {
1318
+ id: "al-h2so4",
1319
+ name: "\u94DD\u548C\u7A00\u786B\u9178\u53CD\u5E94",
1320
+ latex: "\\ce{2Al + 3H2SO4 -> Al2(SO4)3 + 3H2 ^}",
1321
+ category: "reaction",
1322
+ description: "\u94DD\u4E0E\u7A00\u786B\u9178\u7F6E\u6362\u53CD\u5E94",
1323
+ tags: ["displacement", "metal-acid", "hydrogen"]
1324
+ },
1325
+ {
1326
+ id: "zn-hcl",
1327
+ name: "\u950C\u548C\u7A00\u76D0\u9178\u53CD\u5E94",
1328
+ latex: "\\ce{Zn + 2HCl -> ZnCl2 + H2 ^}",
1329
+ category: "reaction",
1330
+ description: "\u950C\u4E0E\u76D0\u9178\u53CD\u5E94\u5236\u6C22\u6C14",
1331
+ tags: ["displacement", "metal-acid", "hydrogen"]
1332
+ },
1333
+ {
1334
+ id: "fe-hcl",
1335
+ name: "\u94C1\u548C\u7A00\u76D0\u9178\u53CD\u5E94",
1336
+ latex: "\\ce{Fe + 2HCl -> FeCl2 + H2 ^}",
1337
+ category: "reaction",
1338
+ description: "\u94C1\u4E0E\u7A00\u76D0\u9178\u7F6E\u6362\u53CD\u5E94",
1339
+ tags: ["displacement", "metal-acid", "hydrogen"]
1340
+ },
1341
+ {
1342
+ id: "mg-hcl",
1343
+ name: "\u9541\u548C\u7A00\u76D0\u9178\u53CD\u5E94",
1344
+ latex: "\\ce{Mg + 2HCl -> MgCl2 + H2 ^}",
1345
+ category: "reaction",
1346
+ description: "\u9541\u4E0E\u7A00\u76D0\u9178\u5267\u70C8\u53CD\u5E94",
1347
+ tags: ["displacement", "metal-acid", "hydrogen"]
1348
+ },
1349
+ {
1350
+ id: "al-hcl",
1351
+ name: "\u94DD\u548C\u7A00\u76D0\u9178\u53CD\u5E94",
1352
+ latex: "\\ce{2Al + 6HCl -> 2AlCl3 + 3H2 ^}",
1353
+ category: "reaction",
1354
+ description: "\u94DD\u4E0E\u7A00\u76D0\u9178\u7F6E\u6362\u53CD\u5E94",
1355
+ tags: ["displacement", "metal-acid", "hydrogen"]
1356
+ },
1357
+ // --- 还原反应 ---
1358
+ {
1359
+ id: "h2-cuo",
1360
+ name: "\u6C22\u6C14\u8FD8\u539F\u6C27\u5316\u94DC",
1361
+ latex: "\\ce{H2 + CuO ->[\u52A0\u70ED] Cu + H2O}",
1362
+ category: "reaction",
1363
+ description: "\u6C22\u6C14\u8FD8\u539F\u9ED1\u8272\u6C27\u5316\u94DC",
1364
+ tags: ["reduction", "hydrogen", "heating"]
1365
+ },
1366
+ {
1367
+ id: "c-cuo",
1368
+ name: "\u78B3\u8FD8\u539F\u6C27\u5316\u94DC",
1369
+ latex: "\\ce{C + 2CuO ->[\u9AD8\u6E29] 2Cu + CO2 ^}",
1370
+ category: "reaction",
1371
+ description: "\u78B3\u8FD8\u539F\u6C27\u5316\u94DC",
1372
+ tags: ["reduction", "carbon", "heating"]
1373
+ },
1374
+ {
1375
+ id: "c-fe2o3",
1376
+ name: "\u78B3\u8FD8\u539F\u6C27\u5316\u94C1",
1377
+ latex: "\\ce{3C + 2Fe2O3 ->[\u9AD8\u6E29] 4Fe + 3CO2 ^}",
1378
+ category: "reaction",
1379
+ description: "\u78B3\u8FD8\u539F\u6C27\u5316\u94C1\uFF08\u70BC\u94C1\uFF09",
1380
+ tags: ["reduction", "carbon", "iron", "heating", "industrial"]
1381
+ },
1382
+ {
1383
+ id: "co-cuo",
1384
+ name: "\u4E00\u6C27\u5316\u78B3\u8FD8\u539F\u6C27\u5316\u94DC",
1385
+ latex: "\\ce{CO + CuO ->[\u52A0\u70ED] Cu + CO2}",
1386
+ category: "reaction",
1387
+ description: "CO \u8FD8\u539F\u6C27\u5316\u94DC",
1388
+ tags: ["reduction", "carbon-monoxide", "heating"]
1389
+ },
1390
+ {
1391
+ id: "co-fe2o3",
1392
+ name: "\u4E00\u6C27\u5316\u78B3\u8FD8\u539F\u6C27\u5316\u94C1",
1393
+ latex: "\\ce{3CO + Fe2O3 ->[\u9AD8\u6E29] 2Fe + 3CO2}",
1394
+ category: "reaction",
1395
+ description: "\u9AD8\u7089\u70BC\u94C1\u4E3B\u8981\u53CD\u5E94",
1396
+ tags: ["reduction", "carbon-monoxide", "iron", "heating", "industrial"]
1397
+ },
1398
+ // --- 酸碱中和 ---
1399
+ {
1400
+ id: "hcl-naoh",
1401
+ name: "\u76D0\u9178\u4E0E\u6C22\u6C27\u5316\u94A0\u53CD\u5E94",
1402
+ latex: "\\ce{HCl + NaOH -> NaCl + H2O}",
1403
+ category: "reaction",
1404
+ description: "\u9178\u78B1\u4E2D\u548C\u53CD\u5E94",
1405
+ tags: ["neutralization", "acid-base"]
1406
+ },
1407
+ {
1408
+ id: "naoh-hcl",
1409
+ name: "\u6C22\u6C27\u5316\u94A0\u4E0E\u76D0\u9178\u53CD\u5E94",
1410
+ latex: "\\ce{NaOH + HCl -> NaCl + H2O}",
1411
+ category: "reaction",
1412
+ description: "\u9178\u78B1\u4E2D\u548C\u53CD\u5E94",
1413
+ tags: ["neutralization", "acid-base"]
1414
+ },
1415
+ {
1416
+ id: "h2so4-naoh",
1417
+ name: "\u786B\u9178\u4E0E\u6C22\u6C27\u5316\u94A0\u53CD\u5E94",
1418
+ latex: "\\ce{H2SO4 + 2NaOH -> Na2SO4 + 2H2O}",
1419
+ category: "reaction",
1420
+ description: "\u786B\u9178\u4E0E\u70E7\u78B1\u4E2D\u548C",
1421
+ tags: ["neutralization", "acid-base"]
1422
+ },
1423
+ {
1424
+ id: "caoh2-h2so4",
1425
+ name: "\u6C22\u6C27\u5316\u9499\u4E0E\u786B\u9178\u53CD\u5E94",
1426
+ latex: "\\ce{Ca(OH)2 + H2SO4 -> CaSO4 + 2H2O}",
1427
+ category: "reaction",
1428
+ description: "\u719F\u77F3\u7070\u4E0E\u786B\u9178\u4E2D\u548C",
1429
+ tags: ["neutralization", "acid-base"]
1430
+ },
1431
+ // --- 盐与酸反应 ---
1432
+ {
1433
+ id: "caco3-hcl",
1434
+ name: "\u78B3\u9178\u9499\u4E0E\u76D0\u9178\u53CD\u5E94",
1435
+ latex: "\\ce{CaCO3 + 2HCl -> CaCl2 + H2O + CO2 ^}",
1436
+ category: "reaction",
1437
+ description: "\u5B9E\u9A8C\u5BA4\u5236\u4E8C\u6C27\u5316\u78B3",
1438
+ tags: ["gas-preparation", "carbonate", "acid"]
1439
+ },
1440
+ {
1441
+ id: "na2co3-hcl",
1442
+ name: "\u78B3\u9178\u94A0\u4E0E\u76D0\u9178\u53CD\u5E94",
1443
+ latex: "\\ce{Na2CO3 + 2HCl -> 2NaCl + H2O + CO2 ^}",
1444
+ category: "reaction",
1445
+ description: "\u7EAF\u78B1\u4E0E\u76D0\u9178\u53CD\u5E94",
1446
+ tags: ["carbonate", "acid", "gas"]
1447
+ },
1448
+ // --- 盐与碱反应 ---
1449
+ {
1450
+ id: "cuso4-naoh",
1451
+ name: "\u786B\u9178\u94DC\u4E0E\u6C22\u6C27\u5316\u94A0\u53CD\u5E94",
1452
+ latex: "\\ce{CuSO4 + 2NaOH -> Cu(OH)2 v + Na2SO4}",
1453
+ category: "reaction",
1454
+ description: "\u4EA7\u751F\u84DD\u8272\u6C89\u6DC0",
1455
+ tags: ["precipitation", "copper", "base"]
1456
+ },
1457
+ // --- 金属氧化物与酸 ---
1458
+ {
1459
+ id: "cuo-h2so4",
1460
+ name: "\u6C27\u5316\u94DC\u4E0E\u7A00\u786B\u9178\u53CD\u5E94",
1461
+ latex: "\\ce{CuO + H2SO4 -> CuSO4 + H2O}",
1462
+ category: "reaction",
1463
+ description: "\u9ED1\u8272\u6C27\u5316\u94DC\u6EB6\u89E3",
1464
+ tags: ["metal-oxide", "acid", "dissolution"]
1465
+ },
1466
+ // --- 两性反应 ---
1467
+ {
1468
+ id: "al-naoh",
1469
+ name: "\u94DD\u4E0E\u6C22\u6C27\u5316\u94A0\u53CD\u5E94",
1470
+ latex: "\\ce{2Al + 2NaOH + 2H2O -> 2NaAlO2 + 3H2 ^}",
1471
+ category: "reaction",
1472
+ description: "\u94DD\u7684\u4E24\u6027\u4F53\u73B0",
1473
+ tags: ["amphoteric", "aluminum", "hydrogen"]
1474
+ },
1475
+ {
1476
+ id: "si-naoh",
1477
+ name: "\u7845\u4E0E\u6C22\u6C27\u5316\u94A0\u53CD\u5E94",
1478
+ latex: "\\ce{Si + 2NaOH + H2O -> Na2SiO3 + 2H2 ^}",
1479
+ category: "reaction",
1480
+ description: "\u7845\u4E0E\u5F3A\u78B1\u53CD\u5E94",
1481
+ tags: ["silicon", "base", "hydrogen"]
1482
+ },
1483
+ // --- CO₂ 与碱 ---
1484
+ {
1485
+ id: "co2-naoh",
1486
+ name: "\u4E8C\u6C27\u5316\u78B3\u4E0E\u6C22\u6C27\u5316\u94A0\u53CD\u5E94",
1487
+ latex: "\\ce{CO2 + 2NaOH -> Na2CO3 + H2O}",
1488
+ category: "reaction",
1489
+ description: "CO\u2082 \u4E0E\u70E7\u78B1\u53CD\u5E94",
1490
+ tags: ["carbon-dioxide", "base", "absorption"]
1491
+ },
1492
+ // --- 沉淀反应 ---
1493
+ {
1494
+ id: "bacl2-na2so4",
1495
+ name: "\u6C2F\u5316\u94A1\u4E0E\u786B\u9178\u94A0\u53CD\u5E94",
1496
+ latex: "\\ce{BaCl2 + Na2SO4 -> BaSO4 v + 2NaCl}",
1497
+ category: "reaction",
1498
+ description: "\u751F\u6210\u4E0D\u6EB6\u4E8E\u9178\u7684\u767D\u8272\u6C89\u6DC0",
1499
+ tags: ["precipitation", "barium", "sulfate-test"]
1500
+ },
1501
+ // --- 卤素 & 氧化还原 ---
1502
+ {
1503
+ id: "cl2-naoh",
1504
+ name: "\u6C2F\u6C14\u4E0E\u6C22\u6C27\u5316\u94A0\u53CD\u5E94",
1505
+ latex: "\\ce{Cl2 + 2NaOH -> NaCl + NaClO + H2O}",
1506
+ category: "reaction",
1507
+ description: "\u6C2F\u6C14\u5C3E\u6C14\u5904\u7406 / \u5236\u6F02\u767D\u6DB2",
1508
+ tags: ["halogen", "disproportionation", "redox"]
1509
+ },
1510
+ {
1511
+ id: "so2-cl2",
1512
+ name: "\u4E8C\u6C27\u5316\u786B\u4E0E\u6C2F\u6C34\u53CD\u5E94",
1513
+ latex: "\\ce{SO2 + Cl2 + 2H2O -> H2SO4 + 2HCl}",
1514
+ category: "reaction",
1515
+ description: "SO\u2082 \u4F7F\u6C2F\u6C34\u892A\u8272",
1516
+ tags: ["redox", "bleaching", "sulfur"]
1517
+ },
1518
+ {
1519
+ id: "feoh2-oxidation",
1520
+ name: "\u6C22\u6C27\u5316\u4E9A\u94C1\u88AB\u6C27\u5316",
1521
+ latex: "\\ce{4Fe(OH)2 + O2 + 2H2O -> 4Fe(OH)3}",
1522
+ category: "reaction",
1523
+ description: "\u767D\u8272\u6C89\u6DC0\u8FC5\u901F\u53D8\u7070\u7EFF\u8272\u6700\u7EC8\u53D8\u7EA2\u8910\u8272",
1524
+ tags: ["oxidation", "iron", "color-change"]
1525
+ },
1526
+ {
1527
+ id: "feso4-oxidation",
1528
+ name: "\u786B\u9178\u4E9A\u94C1\u88AB\u6C27\u5316",
1529
+ latex: "\\ce{4FeSO4 + O2 + 2H2SO4 -> 2Fe2(SO4)3 + 2H2O}",
1530
+ category: "reaction",
1531
+ description: "Fe\xB2\u207A \u5728\u9178\u6027\u6761\u4EF6\u4E0B\u88AB\u6C27\u5316\u4E3A Fe\xB3\u207A",
1532
+ tags: ["oxidation", "iron", "redox"]
1533
+ },
1534
+ // --- 浓酸反应 ---
1535
+ {
1536
+ id: "cu-h2so4-conc",
1537
+ name: "\u6D53\u786B\u9178\u4E0E\u94DC\u53CD\u5E94",
1538
+ latex: "\\ce{Cu + 2H2SO4 ->[\u52A0\u70ED] CuSO4 + SO2 ^ + 2H2O}",
1539
+ category: "reaction",
1540
+ description: "\u6D53\u786B\u9178\u7684\u5F3A\u6C27\u5316\u6027",
1541
+ tags: ["concentrated-acid", "redox", "copper", "heating"]
1542
+ },
1543
+ {
1544
+ id: "cu-hno3-conc",
1545
+ name: "\u6D53\u785D\u9178\u4E0E\u94DC\u53CD\u5E94",
1546
+ latex: "\\ce{Cu + 4HNO3 -> Cu(NO3)2 + 2NO2 ^ + 2H2O}",
1547
+ category: "reaction",
1548
+ description: "\u6D53\u785D\u9178\u4E0E\u94DC\u53CD\u5E94\u751F\u6210\u7EA2\u68D5\u8272\u6C14\u4F53",
1549
+ tags: ["concentrated-acid", "redox", "copper", "nitrogen-dioxide"]
1550
+ },
1551
+ // --- 碳酸氢盐反应 ---
1552
+ {
1553
+ id: "cahco32-naoh-few",
1554
+ name: "\u78B3\u9178\u6C22\u9499\u4E0E\u5C11\u91CF\u6C22\u6C27\u5316\u94A0\u53CD\u5E94",
1555
+ latex: "\\ce{Ca(HCO3)2 + NaOH -> CaCO3 v + NaHCO3 + H2O}",
1556
+ category: "reaction",
1557
+ description: "\u5C11\u91CF\u78B1\u65F6\u7684\u5206\u6B65\u6C89\u6DC0",
1558
+ tags: ["bicarbonate", "precipitation", "stoichiometry"]
1559
+ },
1560
+ {
1561
+ id: "cahco32-naoh-excess",
1562
+ name: "\u78B3\u9178\u6C22\u9499\u4E0E\u8FC7\u91CF\u6C22\u6C27\u5316\u94A0\u53CD\u5E94",
1563
+ latex: "\\ce{Ca(HCO3)2 + 2NaOH -> CaCO3 v + Na2CO3 + 2H2O}",
1564
+ category: "reaction",
1565
+ description: "\u8FC7\u91CF\u78B1\u5B8C\u5168\u53CD\u5E94",
1566
+ tags: ["bicarbonate", "precipitation", "stoichiometry"]
430
1567
  }
431
1568
  ];
432
1569
  var ELECTROCHEM_TEMPLATES = [
@@ -447,10 +1584,183 @@ var ELECTROCHEM_TEMPLATES = [
447
1584
  tags: ["faraday", "electrolysis"]
448
1585
  }
449
1586
  ];
1587
+ var ION_TEMPLATES = [
1588
+ // --- 阳离子 (Cations) ---
1589
+ { id: "ion-li+", name: "\u9502\u79BB\u5B50", latex: "\\ce{Li+}", category: "ion", description: "Li\u207A", tags: ["cation", "alkali-metal"] },
1590
+ { id: "ion-na+", name: "\u94A0\u79BB\u5B50", latex: "\\ce{Na+}", category: "ion", description: "Na\u207A", tags: ["cation", "alkali-metal"] },
1591
+ { id: "ion-k+", name: "\u94BE\u79BB\u5B50", latex: "\\ce{K+}", category: "ion", description: "K\u207A", tags: ["cation", "alkali-metal"] },
1592
+ { id: "ion-nh4+", name: "\u94F5\u6839\u79BB\u5B50", latex: "\\ce{NH4+}", category: "ion", description: "NH\u2084\u207A", tags: ["cation", "polyatomic"] },
1593
+ { id: "ion-ca2+", name: "\u9499\u79BB\u5B50", latex: "\\ce{Ca^{2+}}", category: "ion", description: "Ca\xB2\u207A", tags: ["cation", "alkaline-earth"] },
1594
+ { id: "ion-mg2+", name: "\u9541\u79BB\u5B50", latex: "\\ce{Mg^{2+}}", category: "ion", description: "Mg\xB2\u207A", tags: ["cation", "alkaline-earth"] },
1595
+ { id: "ion-fe2+", name: "\u4E9A\u94C1\u79BB\u5B50", latex: "\\ce{Fe^{2+}}", category: "ion", description: "Fe\xB2\u207A", tags: ["cation", "transition-metal", "low-valence"] },
1596
+ { id: "ion-fe3+", name: "\u94C1\u79BB\u5B50", latex: "\\ce{Fe^{3+}}", category: "ion", description: "Fe\xB3\u207A", tags: ["cation", "transition-metal", "high-valence"] },
1597
+ { id: "ion-cu2+", name: "\u94DC\u79BB\u5B50", latex: "\\ce{Cu^{2+}}", category: "ion", description: "Cu\xB2\u207A", tags: ["cation", "transition-metal"] },
1598
+ { id: "ion-zn2+", name: "\u950C\u79BB\u5B50", latex: "\\ce{Zn^{2+}}", category: "ion", description: "Zn\xB2\u207A", tags: ["cation", "transition-metal"] },
1599
+ { id: "ion-ag+", name: "\u94F6\u79BB\u5B50", latex: "\\ce{Ag+}", category: "ion", description: "Ag\u207A", tags: ["cation", "transition-metal"] },
1600
+ { id: "ion-al3+", name: "\u94DD\u79BB\u5B50", latex: "\\ce{Al^{3+}}", category: "ion", description: "Al\xB3\u207A", tags: ["cation", "post-transition"] },
1601
+ { id: "ion-h+", name: "\u6C22\u79BB\u5B50", latex: "\\ce{H+}", category: "ion", description: "H\u207A", tags: ["cation", "acid"] },
1602
+ // --- 阴离子 (Anions) ---
1603
+ { id: "ion-f-", name: "\u6C1F\u79BB\u5B50", latex: "\\ce{F-}", category: "ion", description: "F\u207B", tags: ["anion", "halogen"] },
1604
+ { id: "ion-cl-", name: "\u6C2F\u79BB\u5B50", latex: "\\ce{Cl-}", category: "ion", description: "Cl\u207B", tags: ["anion", "halogen"] },
1605
+ { id: "ion-br-", name: "\u6EB4\u79BB\u5B50", latex: "\\ce{Br-}", category: "ion", description: "Br\u207B", tags: ["anion", "halogen"] },
1606
+ { id: "ion-i-", name: "\u7898\u79BB\u5B50", latex: "\\ce{I-}", category: "ion", description: "I\u207B", tags: ["anion", "halogen"] },
1607
+ { id: "ion-o2-", name: "\u6C27\u79BB\u5B50", latex: "\\ce{O^{2-}}", category: "ion", description: "O\xB2\u207B", tags: ["anion", "oxide"] },
1608
+ { id: "ion-s2-", name: "\u786B\u79BB\u5B50", latex: "\\ce{S^{2-}}", category: "ion", description: "S\xB2\u207B", tags: ["anion", "sulfide"] },
1609
+ { id: "ion-oh-", name: "\u6C22\u6C27\u6839\u79BB\u5B50", latex: "\\ce{OH-}", category: "ion", description: "OH\u207B", tags: ["anion", "base", "polyatomic"] },
1610
+ { id: "ion-no3-", name: "\u785D\u9178\u6839\u79BB\u5B50", latex: "\\ce{NO3-}", category: "ion", description: "NO\u2083\u207B", tags: ["anion", "oxyanion", "polyatomic"] },
1611
+ { id: "ion-mno4-", name: "\u9AD8\u9530\u9178\u6839\u79BB\u5B50", latex: "\\ce{MnO4-}", category: "ion", description: "MnO\u2084\u207B", tags: ["anion", "oxyanion", "polyatomic", "oxidizing"] },
1612
+ { id: "ion-clo-", name: "\u6B21\u6C2F\u9178\u6839\u79BB\u5B50", latex: "\\ce{ClO-}", category: "ion", description: "ClO\u207B", tags: ["anion", "oxyanion", "polyatomic", "bleaching"] },
1613
+ { id: "ion-so4-2-", name: "\u786B\u9178\u6839\u79BB\u5B50", latex: "\\ce{SO4^{2-}}", category: "ion", description: "SO\u2084\xB2\u207B", tags: ["anion", "oxyanion", "polyatomic"] },
1614
+ { id: "ion-co3-2-", name: "\u78B3\u9178\u6839\u79BB\u5B50", latex: "\\ce{CO3^{2-}}", category: "ion", description: "CO\u2083\xB2\u207B", tags: ["anion", "oxyanion", "polyatomic"] },
1615
+ { id: "ion-so3-2-", name: "\u4E9A\u786B\u9178\u6839\u79BB\u5B50", latex: "\\ce{SO3^{2-}}", category: "ion", description: "SO\u2083\xB2\u207B", tags: ["anion", "oxyanion", "polyatomic"] },
1616
+ { id: "ion-cro4-2-", name: "\u94EC\u9178\u6839\u79BB\u5B50", latex: "\\ce{CrO4^{2-}}", category: "ion", description: "CrO\u2084\xB2\u207B", tags: ["anion", "oxyanion", "polyatomic", "chromate"] },
1617
+ { id: "ion-sio3-2-", name: "\u7845\u9178\u6839\u79BB\u5B50", latex: "\\ce{SiO3^{2-}}", category: "ion", description: "SiO\u2083\xB2\u207B", tags: ["anion", "oxyanion", "polyatomic", "silicate"] },
1618
+ { id: "ion-hco3-", name: "\u78B3\u9178\u6C22\u6839\u79BB\u5B50", latex: "\\ce{HCO3-}", category: "ion", description: "HCO\u2083\u207B", tags: ["anion", "bicarbonate", "polyatomic"] },
1619
+ { id: "ion-hso3-", name: "\u4E9A\u786B\u9178\u6C22\u6839\u79BB\u5B50", latex: "\\ce{HSO3-}", category: "ion", description: "HSO\u2083\u207B", tags: ["anion", "bisulfite", "polyatomic"] },
1620
+ { id: "ion-hso4-", name: "\u786B\u9178\u6C22\u6839\u79BB\u5B50", latex: "\\ce{HSO4-}", category: "ion", description: "HSO\u2084\u207B", tags: ["anion", "bisulfate", "polyatomic"] },
1621
+ { id: "ion-ch3coo-", name: "\u918B\u9178\u6839\u79BB\u5B50", latex: "\\ce{CH3COO-}", category: "ion", description: "CH\u2083COO\u207B", tags: ["anion", "acetate", "organic", "polyatomic"] },
1622
+ { id: "ion-cn-", name: "\u6C30\u6839\u79BB\u5B50", latex: "\\ce{CN-}", category: "ion", description: "CN\u207B", tags: ["anion", "cyanide", "polyatomic", "toxic"] },
1623
+ { id: "ion-scn-", name: "\u786B\u6C30\u9178\u6839\u79BB\u5B50", latex: "\\ce{SCN-}", category: "ion", description: "SCN\u207B", tags: ["anion", "thiocyanate", "polyatomic"] },
1624
+ // --- 配离子 (Complex Ions) ---
1625
+ { id: "ion-ag-nh3-2+", name: "\u4E8C\u6C28\u5408\u94F6\u79BB\u5B50", latex: "\\ce{[Ag(NH3)2]+}", category: "ion", description: "[Ag(NH\u2083)\u2082]\u207A", tags: ["complex-ion", "silver", "coordination"] }
1626
+ ];
1627
+ var ELEMENT_TEMPLATES = [
1628
+ // ---- 第1周期 ----
1629
+ { id: "elem-H", name: "\u6C22", latex: "\\ce{H}", category: "element", description: "Hydrogen", tags: ["nonmetal", "period-1", "group-1"] },
1630
+ { id: "elem-He", name: "\u6C26", latex: "\\ce{He}", category: "element", description: "Helium", tags: ["noble-gas", "period-1", "group-18"] },
1631
+ // ---- 第2周期 ----
1632
+ { id: "elem-Li", name: "\u9502", latex: "\\ce{Li}", category: "element", description: "Lithium", tags: ["alkali-metal", "period-2", "group-1"] },
1633
+ { id: "elem-Be", name: "\u94CD", latex: "\\ce{Be}", category: "element", description: "Beryllium", tags: ["alkaline-earth", "period-2", "group-2"] },
1634
+ { id: "elem-B", name: "\u787C", latex: "\\ce{B}", category: "element", description: "Boron", tags: ["metalloid", "period-2", "group-13"] },
1635
+ { id: "elem-C", name: "\u78B3", latex: "\\ce{C}", category: "element", description: "Carbon", tags: ["nonmetal", "period-2", "group-14"] },
1636
+ { id: "elem-N", name: "\u6C2E", latex: "\\ce{N}", category: "element", description: "Nitrogen", tags: ["nonmetal", "period-2", "group-15"] },
1637
+ { id: "elem-O", name: "\u6C27", latex: "\\ce{O}", category: "element", description: "Oxygen", tags: ["nonmetal", "period-2", "group-16"] },
1638
+ { id: "elem-F", name: "\u6C1F", latex: "\\ce{F}", category: "element", description: "Fluorine", tags: ["halogen", "period-2", "group-17"] },
1639
+ { id: "elem-Ne", name: "\u6C16", latex: "\\ce{Ne}", category: "element", description: "Neon", tags: ["noble-gas", "period-2", "group-18"] },
1640
+ // ---- 第3周期 ----
1641
+ { id: "elem-Na", name: "\u94A0", latex: "\\ce{Na}", category: "element", description: "Sodium", tags: ["alkali-metal", "period-3", "group-1"] },
1642
+ { id: "elem-Mg", name: "\u9541", latex: "\\ce{Mg}", category: "element", description: "Magnesium", tags: ["alkaline-earth", "period-3", "group-2"] },
1643
+ { id: "elem-Al", name: "\u94DD", latex: "\\ce{Al}", category: "element", description: "Aluminium", tags: ["metal", "period-3", "group-13"] },
1644
+ { id: "elem-Si", name: "\u7845", latex: "\\ce{Si}", category: "element", description: "Silicon", tags: ["metalloid", "period-3", "group-14"] },
1645
+ { id: "elem-P", name: "\u78F7", latex: "\\ce{P}", category: "element", description: "Phosphorus", tags: ["nonmetal", "period-3", "group-15"] },
1646
+ { id: "elem-S", name: "\u786B", latex: "\\ce{S}", category: "element", description: "Sulfur", tags: ["nonmetal", "period-3", "group-16"] },
1647
+ { id: "elem-Cl", name: "\u6C2F", latex: "\\ce{Cl}", category: "element", description: "Chlorine", tags: ["halogen", "period-3", "group-17"] },
1648
+ { id: "elem-Ar", name: "\u6C29", latex: "\\ce{Ar}", category: "element", description: "Argon", tags: ["noble-gas", "period-3", "group-18"] },
1649
+ // ---- 第4周期 ----
1650
+ { id: "elem-K", name: "\u94BE", latex: "\\ce{K}", category: "element", description: "Potassium", tags: ["alkali-metal", "period-4", "group-1"] },
1651
+ { id: "elem-Ca", name: "\u9499", latex: "\\ce{Ca}", category: "element", description: "Calcium", tags: ["alkaline-earth", "period-4", "group-2"] },
1652
+ { id: "elem-Sc", name: "\u94AA", latex: "\\ce{Sc}", category: "element", description: "Scandium", tags: ["transition-metal", "period-4", "group-3"] },
1653
+ { id: "elem-Ti", name: "\u949B", latex: "\\ce{Ti}", category: "element", description: "Titanium", tags: ["transition-metal", "period-4", "group-4"] },
1654
+ { id: "elem-V", name: "\u9492", latex: "\\ce{V}", category: "element", description: "Vanadium", tags: ["transition-metal", "period-4", "group-5"] },
1655
+ { id: "elem-Cr", name: "\u94EC", latex: "\\ce{Cr}", category: "element", description: "Chromium", tags: ["transition-metal", "period-4", "group-6"] },
1656
+ { id: "elem-Mn", name: "\u9530", latex: "\\ce{Mn}", category: "element", description: "Manganese", tags: ["transition-metal", "period-4", "group-7"] },
1657
+ { id: "elem-Fe", name: "\u94C1", latex: "\\ce{Fe}", category: "element", description: "Iron", tags: ["transition-metal", "period-4", "group-8"] },
1658
+ { id: "elem-Co", name: "\u94B4", latex: "\\ce{Co}", category: "element", description: "Cobalt", tags: ["transition-metal", "period-4", "group-9"] },
1659
+ { id: "elem-Ni", name: "\u954D", latex: "\\ce{Ni}", category: "element", description: "Nickel", tags: ["transition-metal", "period-4", "group-10"] },
1660
+ { id: "elem-Cu", name: "\u94DC", latex: "\\ce{Cu}", category: "element", description: "Copper", tags: ["transition-metal", "period-4", "group-11"] },
1661
+ { id: "elem-Zn", name: "\u950C", latex: "\\ce{Zn}", category: "element", description: "Zinc", tags: ["transition-metal", "period-4", "group-12"] },
1662
+ { id: "elem-Ga", name: "\u9553", latex: "\\ce{Ga}", category: "element", description: "Gallium", tags: ["metal", "period-4", "group-13"] },
1663
+ { id: "elem-Ge", name: "\u9517", latex: "\\ce{Ge}", category: "element", description: "Germanium", tags: ["metalloid", "period-4", "group-14"] },
1664
+ { id: "elem-As", name: "\u7837", latex: "\\ce{As}", category: "element", description: "Arsenic", tags: ["metalloid", "period-4", "group-15"] },
1665
+ { id: "elem-Se", name: "\u7852", latex: "\\ce{Se}", category: "element", description: "Selenium", tags: ["nonmetal", "period-4", "group-16"] },
1666
+ { id: "elem-Br", name: "\u6EB4", latex: "\\ce{Br}", category: "element", description: "Bromine", tags: ["halogen", "period-4", "group-17"] },
1667
+ { id: "elem-Kr", name: "\u6C2A", latex: "\\ce{Kr}", category: "element", description: "Krypton", tags: ["noble-gas", "period-4", "group-18"] },
1668
+ // ---- 第5周期 ----
1669
+ { id: "elem-Rb", name: "\u94F7", latex: "\\ce{Rb}", category: "element", description: "Rubidium", tags: ["alkali-metal", "period-5", "group-1"] },
1670
+ { id: "elem-Sr", name: "\u9536", latex: "\\ce{Sr}", category: "element", description: "Strontium", tags: ["alkaline-earth", "period-5", "group-2"] },
1671
+ { id: "elem-Y", name: "\u9487", latex: "\\ce{Y}", category: "element", description: "Yttrium", tags: ["transition-metal", "period-5", "group-3"] },
1672
+ { id: "elem-Zr", name: "\u9506", latex: "\\ce{Zr}", category: "element", description: "Zirconium", tags: ["transition-metal", "period-5", "group-4"] },
1673
+ { id: "elem-Nb", name: "\u94CC", latex: "\\ce{Nb}", category: "element", description: "Niobium", tags: ["transition-metal", "period-5", "group-5"] },
1674
+ { id: "elem-Mo", name: "\u94BC", latex: "\\ce{Mo}", category: "element", description: "Molybdenum", tags: ["transition-metal", "period-5", "group-6"] },
1675
+ { id: "elem-Tc", name: "\u951D", latex: "\\ce{Tc}", category: "element", description: "Technetium", tags: ["transition-metal", "period-5", "group-7"] },
1676
+ { id: "elem-Ru", name: "\u948C", latex: "\\ce{Ru}", category: "element", description: "Ruthenium", tags: ["transition-metal", "period-5", "group-8"] },
1677
+ { id: "elem-Rh", name: "\u94D1", latex: "\\ce{Rh}", category: "element", description: "Rhodium", tags: ["transition-metal", "period-5", "group-9"] },
1678
+ { id: "elem-Pd", name: "\u94AF", latex: "\\ce{Pd}", category: "element", description: "Palladium", tags: ["transition-metal", "period-5", "group-10"] },
1679
+ { id: "elem-Ag", name: "\u94F6", latex: "\\ce{Ag}", category: "element", description: "Silver", tags: ["transition-metal", "period-5", "group-11"] },
1680
+ { id: "elem-Cd", name: "\u9549", latex: "\\ce{Cd}", category: "element", description: "Cadmium", tags: ["transition-metal", "period-5", "group-12"] },
1681
+ { id: "elem-In", name: "\u94DF", latex: "\\ce{In}", category: "element", description: "Indium", tags: ["metal", "period-5", "group-13"] },
1682
+ { id: "elem-Sn", name: "\u9521", latex: "\\ce{Sn}", category: "element", description: "Tin", tags: ["metal", "period-5", "group-14"] },
1683
+ { id: "elem-Sb", name: "\u9511", latex: "\\ce{Sb}", category: "element", description: "Antimony", tags: ["metalloid", "period-5", "group-15"] },
1684
+ { id: "elem-Te", name: "\u78B2", latex: "\\ce{Te}", category: "element", description: "Tellurium", tags: ["metalloid", "period-5", "group-16"] },
1685
+ { id: "elem-I", name: "\u7898", latex: "\\ce{I}", category: "element", description: "Iodine", tags: ["halogen", "period-5", "group-17"] },
1686
+ { id: "elem-Xe", name: "\u6C19", latex: "\\ce{Xe}", category: "element", description: "Xenon", tags: ["noble-gas", "period-5", "group-18"] },
1687
+ // ---- 第6周期 ----
1688
+ { id: "elem-Cs", name: "\u94EF", latex: "\\ce{Cs}", category: "element", description: "Cesium", tags: ["alkali-metal", "period-6", "group-1"] },
1689
+ { id: "elem-Ba", name: "\u94A1", latex: "\\ce{Ba}", category: "element", description: "Barium", tags: ["alkaline-earth", "period-6", "group-2"] },
1690
+ // La-Lu: 镧系 (Lanthanides)
1691
+ { id: "elem-La", name: "\u9567", latex: "\\ce{La}", category: "element", description: "Lanthanum", tags: ["lanthanide", "period-6", "f-block"] },
1692
+ { id: "elem-Ce", name: "\u94C8", latex: "\\ce{Ce}", category: "element", description: "Cerium", tags: ["lanthanide", "period-6", "f-block"] },
1693
+ { id: "elem-Pr", name: "\u9568", latex: "\\ce{Pr}", category: "element", description: "Praseodymium", tags: ["lanthanide", "period-6", "f-block"] },
1694
+ { id: "elem-Nd", name: "\u9495", latex: "\\ce{Nd}", category: "element", description: "Neodymium", tags: ["lanthanide", "period-6", "f-block"] },
1695
+ { id: "elem-Pm", name: "\u94B7", latex: "\\ce{Pm}", category: "element", description: "Promethium", tags: ["lanthanide", "period-6", "f-block"] },
1696
+ { id: "elem-Sm", name: "\u9490", latex: "\\ce{Sm}", category: "element", description: "Samarium", tags: ["lanthanide", "period-6", "f-block"] },
1697
+ { id: "elem-Eu", name: "\u94D5", latex: "\\ce{Eu}", category: "element", description: "Europium", tags: ["lanthanide", "period-6", "f-block"] },
1698
+ { id: "elem-Gd", name: "\u9486", latex: "\\ce{Gd}", category: "element", description: "Gadolinium", tags: ["lanthanide", "period-6", "f-block"] },
1699
+ { id: "elem-Tb", name: "\u94FD", latex: "\\ce{Tb}", category: "element", description: "Terbium", tags: ["lanthanide", "period-6", "f-block"] },
1700
+ { id: "elem-Dy", name: "\u955D", latex: "\\ce{Dy}", category: "element", description: "Dysprosium", tags: ["lanthanide", "period-6", "f-block"] },
1701
+ { id: "elem-Ho", name: "\u94AC", latex: "\\ce{Ho}", category: "element", description: "Holmium", tags: ["lanthanide", "period-6", "f-block"] },
1702
+ { id: "elem-Er", name: "\u94D2", latex: "\\ce{Er}", category: "element", description: "Erbium", tags: ["lanthanide", "period-6", "f-block"] },
1703
+ { id: "elem-Tm", name: "\u94E5", latex: "\\ce{Tm}", category: "element", description: "Thulium", tags: ["lanthanide", "period-6", "f-block"] },
1704
+ { id: "elem-Yb", name: "\u9571", latex: "\\ce{Yb}", category: "element", description: "Ytterbium", tags: ["lanthanide", "period-6", "f-block"] },
1705
+ { id: "elem-Lu", name: "\u9565", latex: "\\ce{Lu}", category: "element", description: "Lutetium", tags: ["lanthanide", "period-6", "f-block"] },
1706
+ // 5d 过渡金属
1707
+ { id: "elem-Hf", name: "\u94EA", latex: "\\ce{Hf}", category: "element", description: "Hafnium", tags: ["transition-metal", "period-6", "group-4"] },
1708
+ { id: "elem-Ta", name: "\u94BD", latex: "\\ce{Ta}", category: "element", description: "Tantalum", tags: ["transition-metal", "period-6", "group-5"] },
1709
+ { id: "elem-W", name: "\u94A8", latex: "\\ce{W}", category: "element", description: "Tungsten", tags: ["transition-metal", "period-6", "group-6"] },
1710
+ { id: "elem-Re", name: "\u94FC", latex: "\\ce{Re}", category: "element", description: "Rhenium", tags: ["transition-metal", "period-6", "group-7"] },
1711
+ { id: "elem-Os", name: "\u9507", latex: "\\ce{Os}", category: "element", description: "Osmium", tags: ["transition-metal", "period-6", "group-8"] },
1712
+ { id: "elem-Ir", name: "\u94F1", latex: "\\ce{Ir}", category: "element", description: "Iridium", tags: ["transition-metal", "period-6", "group-9"] },
1713
+ { id: "elem-Pt", name: "\u94C2", latex: "\\ce{Pt}", category: "element", description: "Platinum", tags: ["transition-metal", "period-6", "group-10"] },
1714
+ { id: "elem-Au", name: "\u91D1", latex: "\\ce{Au}", category: "element", description: "Gold", tags: ["transition-metal", "period-6", "group-11"] },
1715
+ { id: "elem-Hg", name: "\u6C5E", latex: "\\ce{Hg}", category: "element", description: "Mercury", tags: ["transition-metal", "period-6", "group-12", "liquid"] },
1716
+ { id: "elem-Tl", name: "\u94CA", latex: "\\ce{Tl}", category: "element", description: "Thallium", tags: ["metal", "period-6", "group-13"] },
1717
+ { id: "elem-Pb", name: "\u94C5", latex: "\\ce{Pb}", category: "element", description: "Lead", tags: ["metal", "period-6", "group-14"] },
1718
+ { id: "elem-Bi", name: "\u94CB", latex: "\\ce{Bi}", category: "element", description: "Bismuth", tags: ["metal", "period-6", "group-15"] },
1719
+ { id: "elem-Po", name: "\u948B", latex: "\\ce{Po}", category: "element", description: "Polonium", tags: ["metalloid", "period-6", "group-16"] },
1720
+ { id: "elem-At", name: "\u7839", latex: "\\ce{At}", category: "element", description: "Astatine", tags: ["halogen", "period-6", "group-17"] },
1721
+ { id: "elem-Rn", name: "\u6C21", latex: "\\ce{Rn}", category: "element", description: "Radon", tags: ["noble-gas", "period-6", "group-18"] },
1722
+ // ---- 第7周期 ----
1723
+ { id: "elem-Fr", name: "\u94AB", latex: "\\ce{Fr}", category: "element", description: "Francium", tags: ["alkali-metal", "period-7", "group-1"] },
1724
+ { id: "elem-Ra", name: "\u956D", latex: "\\ce{Ra}", category: "element", description: "Radium", tags: ["alkaline-earth", "period-7", "group-2"] },
1725
+ // Ac-Lr: 锕系 (Actinides)
1726
+ { id: "elem-Ac", name: "\u9515", latex: "\\ce{Ac}", category: "element", description: "Actinium", tags: ["actinide", "period-7", "f-block"] },
1727
+ { id: "elem-Th", name: "\u948D", latex: "\\ce{Th}", category: "element", description: "Thorium", tags: ["actinide", "period-7", "f-block"] },
1728
+ { id: "elem-Pa", name: "\u9564", latex: "\\ce{Pa}", category: "element", description: "Protactinium", tags: ["actinide", "period-7", "f-block"] },
1729
+ { id: "elem-U", name: "\u94C0", latex: "\\ce{U}", category: "element", description: "Uranium", tags: ["actinide", "period-7", "f-block"] },
1730
+ { id: "elem-Np", name: "\u954E", latex: "\\ce{Np}", category: "element", description: "Neptunium", tags: ["actinide", "period-7", "f-block"] },
1731
+ { id: "elem-Pu", name: "\u949A", latex: "\\ce{Pu}", category: "element", description: "Plutonium", tags: ["actinide", "period-7", "f-block"] },
1732
+ { id: "elem-Am", name: "\u9545", latex: "\\ce{Am}", category: "element", description: "Americium", tags: ["actinide", "period-7", "f-block"] },
1733
+ { id: "elem-Cm", name: "\u9514", latex: "\\ce{Cm}", category: "element", description: "Curium", tags: ["actinide", "period-7", "f-block"] },
1734
+ { id: "elem-Bk", name: "\u952B", latex: "\\ce{Bk}", category: "element", description: "Berkelium", tags: ["actinide", "period-7", "f-block"] },
1735
+ { id: "elem-Cf", name: "\u950E", latex: "\\ce{Cf}", category: "element", description: "Californium", tags: ["actinide", "period-7", "f-block"] },
1736
+ { id: "elem-Es", name: "\u953F", latex: "\\ce{Es}", category: "element", description: "Einsteinium", tags: ["actinide", "period-7", "f-block"] },
1737
+ { id: "elem-Fm", name: "\u9544", latex: "\\ce{Fm}", category: "element", description: "Fermium", tags: ["actinide", "period-7", "f-block"] },
1738
+ { id: "elem-Md", name: "\u9494", latex: "\\ce{Md}", category: "element", description: "Mendelevium", tags: ["actinide", "period-7", "f-block"] },
1739
+ { id: "elem-No", name: "\u9518", latex: "\\ce{No}", category: "element", description: "Nobelium", tags: ["actinide", "period-7", "f-block"] },
1740
+ { id: "elem-Lr", name: "\u94F9", latex: "\\ce{Lr}", category: "element", description: "Lawrencium", tags: ["actinide", "period-7", "f-block"] },
1741
+ // 6d 超重元素
1742
+ { id: "elem-Rf", name: "\u{2CB3B}", latex: "\\ce{Rf}", category: "element", description: "Rutherfordium", tags: ["transition-metal", "period-7", "group-4", "synthetic"] },
1743
+ { id: "elem-Db", name: "\u{2CB4A}", latex: "\\ce{Db}", category: "element", description: "Dubnium", tags: ["transition-metal", "period-7", "group-5", "synthetic"] },
1744
+ { id: "elem-Sg", name: "\u{2CB73}", latex: "\\ce{Sg}", category: "element", description: "Seaborgium", tags: ["transition-metal", "period-7", "group-6", "synthetic"] },
1745
+ { id: "elem-Bh", name: "\u{2CB5B}", latex: "\\ce{Bh}", category: "element", description: "Bohrium", tags: ["transition-metal", "period-7", "group-7", "synthetic"] },
1746
+ { id: "elem-Hs", name: "\u{2CB76}", latex: "\\ce{Hs}", category: "element", description: "Hassium", tags: ["transition-metal", "period-7", "group-8", "synthetic"] },
1747
+ { id: "elem-Mt", name: "\u9FCF", latex: "\\ce{Mt}", category: "element", description: "Meitnerium", tags: ["transition-metal", "period-7", "group-9", "synthetic"] },
1748
+ { id: "elem-Ds", name: "\u{2B7FC}", latex: "\\ce{Ds}", category: "element", description: "Darmstadtium", tags: ["transition-metal", "period-7", "group-10", "synthetic"] },
1749
+ { id: "elem-Rg", name: "\u{2CB2D}", latex: "\\ce{Rg}", category: "element", description: "Roentgenium", tags: ["transition-metal", "period-7", "group-11", "synthetic"] },
1750
+ { id: "elem-Cn", name: "\u93B6", latex: "\\ce{Cn}", category: "element", description: "Copernicium", tags: ["transition-metal", "period-7", "group-12", "synthetic"] },
1751
+ { id: "elem-Nh", name: "\u9268", latex: "\\ce{Nh}", category: "element", description: "Nihonium", tags: ["metal", "period-7", "group-13", "synthetic"] },
1752
+ { id: "elem-Fl", name: "\u{2B4E7}", latex: "\\ce{Fl}", category: "element", description: "Flerovium", tags: ["metal", "period-7", "group-14", "synthetic"] },
1753
+ { id: "elem-Mc", name: "\u9546", latex: "\\ce{Mc}", category: "element", description: "Moscovium", tags: ["metal", "period-7", "group-15", "synthetic"] },
1754
+ { id: "elem-Lv", name: "\u925D", latex: "\\ce{Lv}", category: "element", description: "Livermorium", tags: ["metal", "period-7", "group-16", "synthetic"] },
1755
+ { id: "elem-Ts", name: "\u77F3\u7530", latex: "\\ce{Ts}", category: "element", description: "Tennessine", tags: ["halogen", "period-7", "group-17", "synthetic"] },
1756
+ { id: "elem-Og", name: "\u6C14\u5967", latex: "\\ce{Og}", category: "element", description: "Oganesson", tags: ["noble-gas", "period-7", "group-18", "synthetic"] }
1757
+ ];
450
1758
  var ALL_CHEM_TEMPLATES = [
451
1759
  ...COMPOUND_TEMPLATES,
452
1760
  ...REACTION_TEMPLATES,
453
- ...ELECTROCHEM_TEMPLATES
1761
+ ...ELECTROCHEM_TEMPLATES,
1762
+ ...ION_TEMPLATES,
1763
+ ...ELEMENT_TEMPLATES
454
1764
  ];
455
1765
  function searchCompounds(query) {
456
1766
  const q = query.toLowerCase();
@@ -464,66 +1774,67 @@ function getAcids() {
464
1774
  function getBases() {
465
1775
  return COMPOUND_TEMPLATES.filter((t) => t.tags.includes("base"));
466
1776
  }
1777
+ function searchIons(query) {
1778
+ const q = query.toLowerCase();
1779
+ return ION_TEMPLATES.filter(
1780
+ (t) => t.name.toLowerCase().includes(q) || t.latex.toLowerCase().includes(q) || t.description.toLowerCase().includes(q) || t.tags.some((tag) => tag.toLowerCase().includes(q))
1781
+ );
1782
+ }
1783
+ function getCations() {
1784
+ return ION_TEMPLATES.filter((t) => t.tags.includes("cation"));
1785
+ }
1786
+ function getAnions() {
1787
+ return ION_TEMPLATES.filter((t) => t.tags.includes("anion"));
1788
+ }
1789
+ function searchElements(query) {
1790
+ const q = query.toLowerCase();
1791
+ return ELEMENT_TEMPLATES.filter(
1792
+ (t) => t.name.toLowerCase().includes(q) || t.description.toLowerCase().includes(q) || t.tags.some((tag) => tag.toLowerCase().includes(q))
1793
+ );
1794
+ }
1795
+ function getElementsByPeriod(period) {
1796
+ const tag = `period-${period}`;
1797
+ return ELEMENT_TEMPLATES.filter((t) => t.tags.includes(tag));
1798
+ }
1799
+ function getElementsByGroup(group) {
1800
+ const tag = `group-${group}`;
1801
+ return ELEMENT_TEMPLATES.filter((t) => t.tags.includes(tag));
1802
+ }
467
1803
 
468
1804
  // src/greek-presets.ts
1805
+ import {
1806
+ GREEK_LOWERCASE,
1807
+ GREEK_UPPERCASE
1808
+ } from "@sciexpr/math";
1809
+ var VARIANT_MAP = {
1810
+ "\\epsilon": [{ latex: "\\varepsilon", unicode: "\u03B5", name: "Epsilon (var)" }],
1811
+ "\\theta": [{ latex: "\\vartheta", unicode: "\u03D1", name: "Theta (var)" }],
1812
+ "\\pi": [{ latex: "\\varpi", unicode: "\u03D6", name: "Pi (var)" }],
1813
+ "\\rho": [{ latex: "\\varrho", unicode: "\u03F1", name: "Rho (var)" }],
1814
+ "\\sigma": [{ latex: "\\varsigma", unicode: "\u03C2", name: "Sigma (final)" }],
1815
+ "\\phi": [{ latex: "\\varphi", unicode: "\u03D5", name: "Phi (var)" }]
1816
+ };
1817
+ function capitalize(s) {
1818
+ return s.charAt(0).toUpperCase() + s.slice(1);
1819
+ }
1820
+ function toGreekLetter(entry) {
1821
+ return {
1822
+ latex: entry.latex,
1823
+ unicode: entry.unicode,
1824
+ name: entry.description ?? capitalize(entry.name),
1825
+ englishName: entry.name,
1826
+ variants: VARIANT_MAP[entry.latex]
1827
+ };
1828
+ }
469
1829
  var GREEK_LOWERCASE_GROUP = {
470
1830
  id: "greek-lowercase",
471
1831
  label: "Greek Lowercase (\u5C0F\u5199)",
472
- letters: [
473
- { latex: "\\alpha", unicode: "\u03B1", name: "Alpha", englishName: "alpha" },
474
- { latex: "\\beta", unicode: "\u03B2", name: "Beta", englishName: "beta" },
475
- { latex: "\\gamma", unicode: "\u03B3", name: "Gamma", englishName: "gamma" },
476
- { latex: "\\delta", unicode: "\u03B4", name: "Delta", englishName: "delta" },
477
- { latex: "\\epsilon", unicode: "\u03B5", name: "Epsilon", englishName: "epsilon", variants: [
478
- { latex: "\\varepsilon", unicode: "\u03B5", name: "Epsilon (var)" }
479
- ] },
480
- { latex: "\\zeta", unicode: "\u03B6", name: "Zeta", englishName: "zeta" },
481
- { latex: "\\eta", unicode: "\u03B7", name: "Eta", englishName: "eta" },
482
- { latex: "\\theta", unicode: "\u03B8", name: "Theta", englishName: "theta", variants: [
483
- { latex: "\\vartheta", unicode: "\u03D1", name: "Theta (var)" }
484
- ] },
485
- { latex: "\\iota", unicode: "\u03B9", name: "Iota", englishName: "iota" },
486
- { latex: "\\kappa", unicode: "\u03BA", name: "Kappa", englishName: "kappa" },
487
- { latex: "\\lambda", unicode: "\u03BB", name: "Lambda", englishName: "lambda" },
488
- { latex: "\\mu", unicode: "\u03BC", name: "Mu", englishName: "mu" },
489
- { latex: "\\nu", unicode: "\u03BD", name: "Nu", englishName: "nu" },
490
- { latex: "\\xi", unicode: "\u03BE", name: "Xi", englishName: "xi" },
491
- { latex: "\\omicron", unicode: "\u03BF", name: "Omicron", englishName: "omicron" },
492
- { latex: "\\pi", unicode: "\u03C0", name: "Pi", englishName: "pi", variants: [
493
- { latex: "\\varpi", unicode: "\u03D6", name: "Pi (var)" }
494
- ] },
495
- { latex: "\\rho", unicode: "\u03C1", name: "Rho", englishName: "rho", variants: [
496
- { latex: "\\varrho", unicode: "\u03F1", name: "Rho (var)" }
497
- ] },
498
- { latex: "\\sigma", unicode: "\u03C3", name: "Sigma", englishName: "sigma", variants: [
499
- { latex: "\\varsigma", unicode: "\u03C2", name: "Sigma (final)" }
500
- ] },
501
- { latex: "\\tau", unicode: "\u03C4", name: "Tau", englishName: "tau" },
502
- { latex: "\\upsilon", unicode: "\u03C5", name: "Upsilon", englishName: "upsilon" },
503
- { latex: "\\phi", unicode: "\u03C6", name: "Phi", englishName: "phi", variants: [
504
- { latex: "\\varphi", unicode: "\u03D5", name: "Phi (var)" }
505
- ] },
506
- { latex: "\\chi", unicode: "\u03C7", name: "Chi", englishName: "chi" },
507
- { latex: "\\psi", unicode: "\u03C8", name: "Psi", englishName: "psi" },
508
- { latex: "\\omega", unicode: "\u03C9", name: "Omega", englishName: "omega" }
509
- ]
1832
+ letters: GREEK_LOWERCASE.map(toGreekLetter)
510
1833
  };
511
1834
  var GREEK_UPPERCASE_GROUP = {
512
1835
  id: "greek-uppercase",
513
1836
  label: "Greek Uppercase (\u5927\u5199)",
514
- letters: [
515
- { latex: "\\Gamma", unicode: "\u0393", name: "Gamma", englishName: "Gamma" },
516
- { latex: "\\Delta", unicode: "\u0394", name: "Delta", englishName: "Delta" },
517
- { latex: "\\Theta", unicode: "\u0398", name: "Theta", englishName: "Theta" },
518
- { latex: "\\Lambda", unicode: "\u039B", name: "Lambda", englishName: "Lambda" },
519
- { latex: "\\Xi", unicode: "\u039E", name: "Xi", englishName: "Xi" },
520
- { latex: "\\Pi", unicode: "\u03A0", name: "Pi", englishName: "Pi" },
521
- { latex: "\\Sigma", unicode: "\u03A3", name: "Sigma", englishName: "Sigma" },
522
- { latex: "\\Upsilon", unicode: "\u03A5", name: "Upsilon", englishName: "Upsilon" },
523
- { latex: "\\Phi", unicode: "\u03A6", name: "Phi", englishName: "Phi" },
524
- { latex: "\\Psi", unicode: "\u03A8", name: "Psi", englishName: "Psi" },
525
- { latex: "\\Omega", unicode: "\u03A9", name: "Omega", englishName: "Omega" }
526
- ]
1837
+ letters: GREEK_UPPERCASE.map(toGreekLetter)
527
1838
  };
528
1839
  var GREEK_GROUPS = [
529
1840
  GREEK_LOWERCASE_GROUP,
@@ -555,28 +1866,150 @@ function searchGreekWithVariants(query) {
555
1866
  }
556
1867
  return results;
557
1868
  }
1869
+
1870
+ // src/palette-chem.ts
1871
+ import {
1872
+ GREEK_LOWERCASE as GREEK_LOWERCASE2,
1873
+ GREEK_UPPERCASE as GREEK_UPPERCASE2
1874
+ } from "@sciexpr/math";
1875
+ function templateToEntry(t, isCommon) {
1876
+ return {
1877
+ latex: t.latex,
1878
+ unicode: "",
1879
+ name: t.name,
1880
+ description: t.description,
1881
+ isCommon
1882
+ };
1883
+ }
1884
+ function takeCommon(list, count) {
1885
+ return list.slice(0, count).map((t) => templateToEntry(t, true));
1886
+ }
1887
+ function takeRest(list, fromIndex) {
1888
+ return list.slice(fromIndex).map((t) => templateToEntry(t, false));
1889
+ }
1890
+ function fromGreekSymbol(s, desc, isCommon = false) {
1891
+ return { latex: s.latex, unicode: s.unicode, name: s.name, description: desc, isCommon };
1892
+ }
1893
+ var CHEM_GREEK_COMMON = /* @__PURE__ */ new Set([
1894
+ "\\alpha",
1895
+ "\\beta",
1896
+ "\\gamma",
1897
+ "\\delta",
1898
+ "\\epsilon",
1899
+ "\\mu",
1900
+ "\\nu",
1901
+ "\\pi",
1902
+ "\\rho",
1903
+ "\\sigma",
1904
+ "\\theta",
1905
+ "\\omega"
1906
+ ]);
1907
+ var CHEM_GREEK_DESCRIPTIONS = {
1908
+ "\\alpha": "\u5E38\u7528\u4E8E\u5316\u5B66\u8868\u793A",
1909
+ "\\delta": "\u5316\u5B66\u4F4D\u79FB",
1910
+ "\\Delta": "\u5927\u5199 Delta / \u52A0\u70ED\u7B26\u53F7",
1911
+ "\\epsilon": "\u6469\u5C14\u5438\u5149\u7CFB\u6570",
1912
+ "\\lambda": "\u6CE2\u957F",
1913
+ "\\mu": "\u5FAE (10\u207B\u2076) / \u5076\u6781\u77E9",
1914
+ "\\nu": "\u9891\u7387 / \u5316\u5B66\u8BA1\u91CF\u7CFB\u6570",
1915
+ "\\pi": "\u6E17\u900F\u538B",
1916
+ "\\rho": "\u5BC6\u5EA6",
1917
+ "\\sigma": "Sigma \u952E / \u8868\u9762\u5F20\u529B",
1918
+ "\\Sigma": "\u6C42\u548C",
1919
+ "\\theta": "\u8986\u76D6\u7387"
1920
+ };
1921
+ var CHEM_PALETTE_CATEGORIES = [
1922
+ {
1923
+ id: "compounds",
1924
+ label: "\u5316\u5B66\u7269\u8D28",
1925
+ symbols: [
1926
+ ...takeCommon(COMPOUND_TEMPLATES, 12),
1927
+ ...takeRest(COMPOUND_TEMPLATES, 12)
1928
+ ]
1929
+ },
1930
+ {
1931
+ id: "ions",
1932
+ label: "\u5316\u5B66\u79BB\u5B50",
1933
+ symbols: [
1934
+ ...takeCommon(ION_TEMPLATES, 10),
1935
+ ...takeRest(ION_TEMPLATES, 10)
1936
+ ]
1937
+ },
1938
+ {
1939
+ id: "chem-symbols",
1940
+ label: "\u5E38\u7528\u7B26\u53F7",
1941
+ symbols: [
1942
+ { latex: "\\ce{->}", unicode: "\u2192", name: "\u53CD\u5E94\u7BAD\u5934", description: "\u5316\u5B66\u53CD\u5E94\u751F\u6210", isCommon: true },
1943
+ { latex: "\\ce{<-}", unicode: "\u2190", name: "\u53CD\u5411\u7BAD\u5934", description: "\u9006\u53CD\u5E94", isCommon: false },
1944
+ { latex: "\\ce{<=>}", unicode: "\u21CC", name: "\u53EF\u9006\u53CD\u5E94", description: "\u5316\u5B66\u5E73\u8861", isCommon: true },
1945
+ { latex: "\\ce{<->}", unicode: "\u21C4", name: "\u53CC\u5411\u7BAD\u5934", isCommon: false },
1946
+ { latex: "\\ce{->[\\Delta]}", unicode: "\u2192[\u0394]", name: "\u52A0\u70ED\u53CD\u5E94", description: "\u52A0\u70ED\u6761\u4EF6\u4E0B", isCommon: true },
1947
+ { latex: "\\ce{->[H+]}", unicode: "\u2192[H\u207A]", name: "\u9178\u50AC\u5316", description: "\u9178\u6027\u6761\u4EF6", isCommon: false },
1948
+ { latex: "\\ce{->[\u4E0A\u9762][\u4E0B\u9762]}", unicode: "\u2192[...][...]", name: "\u6761\u4EF6\u53CD\u5E94", description: "\u663E\u793A\u53CD\u5E94\u6761\u4EF6", isCommon: true },
1949
+ { latex: "\\ce{^{2+}}", unicode: "\xB2\u207A", name: "\u7535\u8377+2", description: "\u4E8C\u4EF7\u9633\u79BB\u5B50", isCommon: true },
1950
+ { latex: "\\ce{^{3+}}", unicode: "\xB3\u207A", name: "\u7535\u8377+3", description: "\u4E09\u4EF7\u9633\u79BB\u5B50", isCommon: true },
1951
+ { latex: "\\ce{^{-}}", unicode: "\u207B", name: "\u7535\u8377-1", description: "\u4E00\u4EF7\u9634\u79BB\u5B50", isCommon: true },
1952
+ { latex: "\\ce{^{2-}}", unicode: "\xB2\u207B", name: "\u7535\u8377-2", description: "\u4E8C\u4EF7\u9634\u79BB\u5B50", isCommon: true },
1953
+ { latex: "\\uparrow", unicode: "\u2191", name: "\u6C14\u4F53\u9038\u51FA", description: "\u2191 \u4EA7\u751F\u6C14\u4F53", isCommon: true },
1954
+ { latex: "\\downarrow", unicode: "\u2193", name: "\u6C89\u6DC0", description: "\u2193 \u4EA7\u751F\u6C89\u6DC0", isCommon: true },
1955
+ { latex: "\\Delta", unicode: "\u0394", name: "\u52A0\u70ED\u7B26\u53F7", isCommon: true },
1956
+ { latex: "\\ce{H2O}", unicode: "H\u2082O", name: "\u6C34", isCommon: true },
1957
+ { latex: "pH", unicode: "pH", name: "pH\u503C", isCommon: true },
1958
+ { latex: "K_{sp}", unicode: "K_sp", name: "\u6EB6\u5EA6\u79EF\u5E38\u6570", isCommon: false },
1959
+ { latex: "K_a", unicode: "K_a", name: "\u9178\u89E3\u79BB\u5E38\u6570", isCommon: false },
1960
+ { latex: "K_b", unicode: "K_b", name: "\u78B1\u89E3\u79BB\u5E38\u6570", isCommon: false }
1961
+ ]
1962
+ },
1963
+ {
1964
+ id: "chem-greek",
1965
+ label: "\u5E0C\u814A\u5B57\u6BCD",
1966
+ symbols: [
1967
+ // Common Greek: lowercase (chemical subset, with domain-specific descriptions)
1968
+ ...GREEK_LOWERCASE2.filter((s) => CHEM_GREEK_COMMON.has(s.latex)).map((s) => fromGreekSymbol(s, CHEM_GREEK_DESCRIPTIONS[s.latex], true)),
1969
+ // Common Greek: uppercase (Delta, Sigma for chemistry)
1970
+ ...GREEK_UPPERCASE2.filter((s) => s.latex === "\\Delta" || s.latex === "\\Sigma").map((s) => fromGreekSymbol(s, CHEM_GREEK_DESCRIPTIONS[s.latex], s.latex === "\\Delta"))
1971
+ ]
1972
+ },
1973
+ {
1974
+ id: "chem-elements",
1975
+ label: "\u5316\u5B66\u5143\u7D20",
1976
+ symbols: [
1977
+ ...takeCommon(ELEMENT_TEMPLATES, 15),
1978
+ ...takeRest(ELEMENT_TEMPLATES, 15)
1979
+ ]
1980
+ }
1981
+ ];
558
1982
  export {
559
1983
  ALGEBRA_TEMPLATES,
560
1984
  ALL_CHEM_TEMPLATES,
561
1985
  ALL_GREEK,
562
1986
  ALL_MATH_TEMPLATES,
563
1987
  CALCULUS_TEMPLATES,
1988
+ CHEM_PALETTE_CATEGORIES,
564
1989
  COMPOUND_TEMPLATES,
565
1990
  ELECTROCHEM_TEMPLATES,
1991
+ ELEMENT_TEMPLATES,
566
1992
  GREEK_GROUPS,
567
1993
  GREEK_LOWERCASE_GROUP,
568
1994
  GREEK_UPPERCASE_GROUP,
1995
+ ION_TEMPLATES,
569
1996
  LINEAR_ALGEBRA_TEMPLATES,
570
1997
  PHYSICS_TEMPLATES,
571
1998
  REACTION_TEMPLATES,
572
1999
  STATS_TEMPLATES,
573
2000
  TRIG_TEMPLATES,
574
2001
  getAcids,
2002
+ getAnions,
575
2003
  getBases,
2004
+ getCations,
2005
+ getElementsByGroup,
2006
+ getElementsByPeriod,
576
2007
  getTemplateById,
577
2008
  getTemplatesByCategory,
578
2009
  searchCompounds,
2010
+ searchElements,
579
2011
  searchGreek,
580
2012
  searchGreekWithVariants,
2013
+ searchIons,
581
2014
  searchTemplates
582
2015
  };