@sciexpr/presets 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -27,21 +27,29 @@ __export(index_exports, {
27
27
  CALCULUS_TEMPLATES: () => CALCULUS_TEMPLATES,
28
28
  COMPOUND_TEMPLATES: () => COMPOUND_TEMPLATES,
29
29
  ELECTROCHEM_TEMPLATES: () => ELECTROCHEM_TEMPLATES,
30
+ ELEMENT_TEMPLATES: () => ELEMENT_TEMPLATES,
30
31
  GREEK_GROUPS: () => GREEK_GROUPS,
31
32
  GREEK_LOWERCASE_GROUP: () => GREEK_LOWERCASE_GROUP,
32
33
  GREEK_UPPERCASE_GROUP: () => GREEK_UPPERCASE_GROUP,
34
+ ION_TEMPLATES: () => ION_TEMPLATES,
33
35
  LINEAR_ALGEBRA_TEMPLATES: () => LINEAR_ALGEBRA_TEMPLATES,
34
36
  PHYSICS_TEMPLATES: () => PHYSICS_TEMPLATES,
35
37
  REACTION_TEMPLATES: () => REACTION_TEMPLATES,
36
38
  STATS_TEMPLATES: () => STATS_TEMPLATES,
37
39
  TRIG_TEMPLATES: () => TRIG_TEMPLATES,
38
40
  getAcids: () => getAcids,
41
+ getAnions: () => getAnions,
39
42
  getBases: () => getBases,
43
+ getCations: () => getCations,
44
+ getElementsByGroup: () => getElementsByGroup,
45
+ getElementsByPeriod: () => getElementsByPeriod,
40
46
  getTemplateById: () => getTemplateById,
41
47
  getTemplatesByCategory: () => getTemplatesByCategory,
42
48
  searchCompounds: () => searchCompounds,
49
+ searchElements: () => searchElements,
43
50
  searchGreek: () => searchGreek,
44
51
  searchGreekWithVariants: () => searchGreekWithVariants,
52
+ searchIons: () => searchIons,
45
53
  searchTemplates: () => searchTemplates
46
54
  });
47
55
  module.exports = __toCommonJS(index_exports);
@@ -386,26 +394,65 @@ function getTemplateById(id) {
386
394
 
387
395
  // src/chem-templates.ts
388
396
  var COMPOUND_TEMPLATES = [
389
- // 无机酸
397
+ // --- 单质 & 常见气体 ---
398
+ { id: "o2", name: "\u6C27\u6C14", latex: "\\ce{O2}", category: "compound", description: "\u6C27\u6C14", tags: ["gas", "diatomic", "oxidizing"] },
399
+ { id: "n2", name: "\u6C2E\u6C14", latex: "\\ce{N2}", category: "compound", description: "\u6C2E\u6C14", tags: ["gas", "diatomic", "inert"] },
400
+ { id: "cl2", name: "\u6C2F\u6C14", latex: "\\ce{Cl2}", category: "compound", description: "\u6C2F\u6C14", tags: ["gas", "halogen", "toxic", "oxidizing"] },
401
+ // --- 氧化物 ---
390
402
  { id: "h2o", name: "\u6C34", latex: "\\ce{H2O}", category: "compound", description: "\u6C34", tags: ["water", "inorganic"] },
403
+ { id: "co2", name: "\u4E8C\u6C27\u5316\u78B3", latex: "\\ce{CO2}", category: "compound", description: "\u4E8C\u6C27\u5316\u78B3", tags: ["oxide", "gas"] },
404
+ { id: "co", name: "\u4E00\u6C27\u5316\u78B3", latex: "\\ce{CO}", category: "compound", description: "\u4E00\u6C27\u5316\u78B3", tags: ["oxide", "gas", "toxic", "reducing"] },
405
+ { id: "so2", name: "\u4E8C\u6C27\u5316\u786B", latex: "\\ce{SO2}", category: "compound", description: "\u4E8C\u6C27\u5316\u786B", tags: ["oxide", "gas", "acid-rain"] },
406
+ { 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"] },
407
+ { 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"] },
408
+ { id: "cao", name: "\u6C27\u5316\u9499", latex: "\\ce{CaO}", category: "compound", description: "\u751F\u77F3\u7070 / \u6C27\u5316\u9499", tags: ["oxide", "industrial", "solid"] },
409
+ { id: "fe2o3", name: "\u6C27\u5316\u94C1", latex: "\\ce{Fe2O3}", category: "compound", description: "\u94C1\u9508 / \u8D64\u94C1\u77FF", tags: ["oxide", "rust"] },
410
+ { id: "al2o3", name: "\u6C27\u5316\u94DD", latex: "\\ce{Al2O3}", category: "compound", description: "\u6C27\u5316\u94DD", tags: ["oxide"] },
411
+ { id: "sio2", name: "\u4E8C\u6C27\u5316\u7845", latex: "\\ce{SiO2}", category: "compound", description: "\u77F3\u82F1 / \u4E8C\u6C27\u5316\u7845", tags: ["oxide", "quartz"] },
412
+ // --- 无机酸 ---
391
413
  { id: "h2so4", name: "\u786B\u9178", latex: "\\ce{H2SO4}", category: "compound", description: "\u786B\u9178", tags: ["acid", "strong"] },
392
414
  { id: "hcl", name: "\u76D0\u9178", latex: "\\ce{HCl}", category: "compound", description: "\u76D0\u9178 / \u6C2F\u5316\u6C22", tags: ["acid", "strong"] },
393
415
  { id: "hno3", name: "\u785D\u9178", latex: "\\ce{HNO3}", category: "compound", description: "\u785D\u9178", tags: ["acid", "strong"] },
394
416
  { id: "h3po4", name: "\u78F7\u9178", latex: "\\ce{H3PO4}", category: "compound", description: "\u78F7\u9178", tags: ["acid"] },
417
+ { id: "h2co3", name: "\u78B3\u9178", latex: "\\ce{H2CO3}", category: "compound", description: "\u78B3\u9178\uFF08\u4E0D\u7A33\u5B9A\uFF09", tags: ["acid", "weak", "unstable"] },
418
+ { 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"] },
419
+ // --- 碱 ---
395
420
  { id: "naoh", name: "\u6C22\u6C27\u5316\u94A0", latex: "\\ce{NaOH}", category: "compound", description: "\u6C22\u6C27\u5316\u94A0 / \u70E7\u78B1", tags: ["base", "strong"] },
396
421
  { id: "caoh2", name: "\u6C22\u6C27\u5316\u9499", latex: "\\ce{Ca(OH)2}", category: "compound", description: "\u6C22\u6C27\u5316\u9499 / \u719F\u77F3\u7070", tags: ["base"] },
397
- //
422
+ { 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"] },
423
+ { 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"] },
424
+ { 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"] },
425
+ // --- 盐 — 氯化物 ---
398
426
  { id: "nacl", name: "\u6C2F\u5316\u94A0", latex: "\\ce{NaCl}", category: "compound", description: "\u98DF\u76D0 / \u6C2F\u5316\u94A0", tags: ["salt", "table"] },
427
+ { id: "nh4cl", name: "\u6C2F\u5316\u94F5", latex: "\\ce{NH4Cl}", category: "compound", description: "\u6C2F\u5316\u94F5", tags: ["salt", "ammonium"] },
428
+ { id: "cacl2", name: "\u6C2F\u5316\u9499", latex: "\\ce{CaCl2}", category: "compound", description: "\u6C2F\u5316\u9499\uFF08\u5E72\u71E5\u5242\uFF09", tags: ["salt", "calcium", "desiccant"] },
429
+ { id: "zncl2", name: "\u6C2F\u5316\u950C", latex: "\\ce{ZnCl2}", category: "compound", description: "\u6C2F\u5316\u950C", tags: ["salt", "zinc"] },
430
+ { id: "fecl2", name: "\u6C2F\u5316\u4E9A\u94C1", latex: "\\ce{FeCl2}", category: "compound", description: "\u6C2F\u5316\u4E9A\u94C1", tags: ["salt", "iron", "low-valence"] },
431
+ { id: "mgcl2", name: "\u6C2F\u5316\u9541", latex: "\\ce{MgCl2}", category: "compound", description: "\u6C2F\u5316\u9541", tags: ["salt", "magnesium"] },
432
+ { id: "alcl3", name: "\u6C2F\u5316\u94DD", latex: "\\ce{AlCl3}", category: "compound", description: "\u6C2F\u5316\u94DD", tags: ["salt", "aluminum"] },
433
+ { id: "bacl2", name: "\u6C2F\u5316\u94A1", latex: "\\ce{BaCl2}", category: "compound", description: "\u6C2F\u5316\u94A1\uFF08\u6709\u6BD2\uFF09", tags: ["salt", "barium", "toxic"] },
434
+ // --- 盐 — 硫酸盐 ---
435
+ { id: "caso4", name: "\u786B\u9178\u9499", latex: "\\ce{CaSO4}", category: "compound", description: "\u77F3\u818F", tags: ["salt", "gypsum"] },
436
+ { id: "cuso4", name: "\u786B\u9178\u94DC", latex: "\\ce{CuSO4}", category: "compound", description: "\u786B\u9178\u94DC / \u84DD\u77FE", tags: ["salt", "copper", "blue"] },
437
+ { 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"] },
438
+ { id: "znso4", name: "\u786B\u9178\u950C", latex: "\\ce{ZnSO4}", category: "compound", description: "\u786B\u9178\u950C", tags: ["salt", "zinc"] },
439
+ { id: "mgso4", name: "\u786B\u9178\u9541", latex: "\\ce{MgSO4}", category: "compound", description: "\u786B\u9178\u9541", tags: ["salt", "magnesium"] },
440
+ { id: "al2so43", name: "\u786B\u9178\u94DD", latex: "\\ce{Al2(SO4)3}", category: "compound", description: "\u786B\u9178\u94DD", tags: ["salt", "aluminum"] },
441
+ { id: "na2so4", name: "\u786B\u9178\u94A0", latex: "\\ce{Na2SO4}", category: "compound", description: "\u786B\u9178\u94A0", tags: ["salt", "sodium"] },
442
+ // --- 盐 — 硝酸盐 ---
443
+ { id: "agno3", name: "\u785D\u9178\u94F6", latex: "\\ce{AgNO3}", category: "compound", description: "\u785D\u9178\u94F6", tags: ["salt", "silver", "nitrate"] },
444
+ { id: "cuno32", name: "\u785D\u9178\u94DC", latex: "\\ce{Cu(NO3)2}", category: "compound", description: "\u785D\u9178\u94DC", tags: ["salt", "copper", "nitrate"] },
445
+ // --- 盐 — 碳酸盐/其他 ---
399
446
  { id: "na2co3", name: "\u78B3\u9178\u94A0", latex: "\\ce{Na2CO3}", category: "compound", description: "\u7EAF\u78B1 / \u78B3\u9178\u94A0", tags: ["salt", "soda"] },
400
447
  { id: "nahco3", name: "\u78B3\u9178\u6C22\u94A0", latex: "\\ce{NaHCO3}", category: "compound", description: "\u5C0F\u82CF\u6253", tags: ["salt", "baking"] },
401
448
  { id: "caco3", name: "\u78B3\u9178\u9499", latex: "\\ce{CaCO3}", category: "compound", description: "\u77F3\u7070\u77F3 / \u5927\u7406\u77F3", tags: ["salt", "limestone"] },
402
- { id: "caso4", name: "\u786B\u9178\u9499", latex: "\\ce{CaSO4}", category: "compound", description: "\u77F3\u818F", tags: ["salt", "gypsum"] },
403
- // 氧化物
404
- { id: "co2", name: "\u4E8C\u6C27\u5316\u78B3", latex: "\\ce{CO2}", category: "compound", description: "\u4E8C\u6C27\u5316\u78B3", tags: ["oxide", "gas"] },
405
- { id: "fe2o3", name: "\u6C27\u5316\u94C1", latex: "\\ce{Fe2O3}", category: "compound", description: "\u94C1\u9508 / \u8D64\u94C1\u77FF", tags: ["oxide", "rust"] },
406
- { id: "al2o3", name: "\u6C27\u5316\u94DD", latex: "\\ce{Al2O3}", category: "compound", description: "\u6C27\u5316\u94DD", tags: ["oxide"] },
407
- { id: "sio2", name: "\u4E8C\u6C27\u5316\u7845", latex: "\\ce{SiO2}", category: "compound", description: "\u77F3\u82F1 / \u4E8C\u6C27\u5316\u7845", tags: ["oxide", "quartz"] },
408
- // 有机物
449
+ { id: "cahco32", name: "\u78B3\u9178\u6C22\u9499", latex: "\\ce{Ca(HCO3)2}", category: "compound", description: "\u78B3\u9178\u6C22\u9499", tags: ["salt", "bicarbonate", "calcium"] },
450
+ { 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"] },
451
+ { id: "kclo3", name: "\u6C2F\u9178\u94BE", latex: "\\ce{KClO3}", category: "compound", description: "\u6C2F\u9178\u94BE\uFF08\u5236\u6C27\u6C14\uFF09", tags: ["salt", "oxidizing", "chlorate"] },
452
+ // --- 其他无机物 ---
453
+ { id: "nh3", name: "\u6C28\u6C14", latex: "\\ce{NH3}", category: "compound", description: "\u6C28\u6C14\uFF08\u523A\u6FC0\u6027\u6C14\u5473\uFF09", tags: ["gas", "ammonia", "base"] },
454
+ { id: "h2o2", name: "\u8FC7\u6C27\u5316\u6C22", latex: "\\ce{H2O2}", category: "compound", description: "\u53CC\u6C27\u6C34 / \u8FC7\u6C27\u5316\u6C22", tags: ["peroxide", "oxidizing", "liquid"] },
455
+ // --- 有机物 ---
409
456
  { id: "ch4", name: "\u7532\u70F7", latex: "\\ce{CH4}", category: "compound", description: "\u7532\u70F7 / \u5929\u7136\u6C14", tags: ["organic", "alkane"] },
410
457
  { id: "c2h5oh", name: "\u4E59\u9187", latex: "\\ce{C2H5OH}", category: "compound", description: "\u9152\u7CBE / \u4E59\u9187", tags: ["organic", "alcohol"] },
411
458
  { id: "c6h12o6", name: "\u8461\u8404\u7CD6", latex: "\\ce{C6H12O6}", category: "compound", description: "\u8461\u8404\u7CD6", tags: ["organic", "sugar"] },
@@ -475,6 +522,482 @@ var REACTION_TEMPLATES = [
475
522
  category: "reaction",
476
523
  description: "\u53EF\u9006\u53CD\u5E94\u901A\u7528\u5F0F",
477
524
  tags: ["equilibrium", "reversible"]
525
+ },
526
+ // =========================================================================
527
+ // 中学化学常见反应 (Middle School Common Reactions)
528
+ // =========================================================================
529
+ // --- 气体制备 & 分解 ---
530
+ {
531
+ id: "nh4cl-caoh2",
532
+ name: "\u6C2F\u5316\u94F5\u4E0E\u6C22\u6C27\u5316\u9499\u53CD\u5E94",
533
+ latex: "\\ce{2NH4Cl + Ca(OH)2 ->[\u52A0\u70ED] CaCl2 + 2NH3 ^ + 2H2O}",
534
+ category: "reaction",
535
+ description: "\u5B9E\u9A8C\u5BA4\u5236\u6C28\u6C14",
536
+ tags: ["ammonia", "gas-preparation", "heating"]
537
+ },
538
+ {
539
+ id: "electrolysis-water-2",
540
+ name: "\u6C34\u5728\u901A\u7535\u6761\u4EF6\u4E0B\u5206\u89E3",
541
+ latex: "\\ce{2H2O ->[\u901A\u7535] 2H2 ^ + O2 ^}",
542
+ category: "reaction",
543
+ description: "\u7535\u89E3\u6C34\u751F\u6210\u6C22\u6C14\u548C\u6C27\u6C14",
544
+ tags: ["electrolysis", "water", "decomposition"]
545
+ },
546
+ {
547
+ id: "h2co3-decomposition",
548
+ name: "\u78B3\u9178\u4E0D\u7A33\u5B9A\u5206\u89E3",
549
+ latex: "\\ce{H2CO3 -> H2O + CO2 ^}",
550
+ category: "reaction",
551
+ description: "\u78B3\u9178\u5E38\u6E29\u5206\u89E3",
552
+ tags: ["decomposition", "acid"]
553
+ },
554
+ {
555
+ id: "caco3-decomposition",
556
+ name: "\u78B3\u9178\u9499\u9AD8\u6E29\u5206\u89E3",
557
+ latex: "\\ce{CaCO3 ->[\u9AD8\u6E29] CaO + CO2 ^}",
558
+ category: "reaction",
559
+ description: "\u77F3\u7070\u77F3\u9AD8\u6E29\u7145\u70E7",
560
+ tags: ["decomposition", "heating", "industrial"]
561
+ },
562
+ {
563
+ id: "kmno4-heating",
564
+ name: "\u52A0\u70ED\u9AD8\u9530\u9178\u94BE",
565
+ latex: "\\ce{2KMnO4 ->[\u52A0\u70ED] K2MnO4 + MnO2 + O2 ^}",
566
+ category: "reaction",
567
+ description: "\u5B9E\u9A8C\u5BA4\u5236\u6C27\u6C14",
568
+ tags: ["oxygen", "gas-preparation", "heating"]
569
+ },
570
+ {
571
+ id: "kclo3-heating",
572
+ name: "\u52A0\u70ED\u6C2F\u9178\u94BE\u548C\u4E8C\u6C27\u5316\u9530\u7684\u6DF7\u5408\u7269",
573
+ latex: "\\ce{2KClO3 ->[MnO2][\u52A0\u70ED] 2KCl + 3O2 ^}",
574
+ category: "reaction",
575
+ description: "\u4E8C\u6C27\u5316\u9530\u50AC\u5316\u5206\u89E3\u6C2F\u9178\u94BE\u5236\u6C27\u6C14",
576
+ tags: ["oxygen", "gas-preparation", "catalyst", "heating"]
577
+ },
578
+ {
579
+ id: "h2o2-decomposition",
580
+ name: "\u8FC7\u6C27\u5316\u6C22\u5728\u4E8C\u6C27\u5316\u9530\u50AC\u5316\u4E0B\u5206\u89E3",
581
+ latex: "\\ce{2H2O2 ->[MnO2] 2H2O + O2 ^}",
582
+ category: "reaction",
583
+ description: "\u53CC\u6C27\u6C34\u50AC\u5316\u5206\u89E3\u5236\u6C27\u6C14",
584
+ tags: ["oxygen", "gas-preparation", "catalyst"]
585
+ },
586
+ {
587
+ id: "nahco3-heating",
588
+ name: "\u78B3\u9178\u6C22\u94A0\u53D7\u70ED\u5206\u89E3",
589
+ latex: "\\ce{2NaHCO3 ->[\u52A0\u70ED] Na2CO3 + H2O + CO2 ^}",
590
+ category: "reaction",
591
+ description: "\u5C0F\u82CF\u6253\u53D7\u70ED\u5206\u89E3",
592
+ tags: ["decomposition", "heating", "baking"]
593
+ },
594
+ // --- 化合反应 ---
595
+ {
596
+ id: "co2-water",
597
+ name: "\u4E8C\u6C27\u5316\u78B3\u4E0E\u6C34\u53CD\u5E94",
598
+ latex: "\\ce{CO2 + H2O -> H2CO3}",
599
+ category: "reaction",
600
+ description: "\u78B3\u9178\u7684\u751F\u6210",
601
+ tags: ["combination", "acid"]
602
+ },
603
+ {
604
+ id: "co2-caoh2",
605
+ name: "\u4E8C\u6C27\u5316\u78B3\u4E0E\u6F84\u6E05\u77F3\u7070\u6C34\u53CD\u5E94",
606
+ latex: "\\ce{CO2 + Ca(OH)2 -> CaCO3 v + H2O}",
607
+ category: "reaction",
608
+ description: "\u77F3\u7070\u6C34\u53D8\u6D51\u6D4A",
609
+ tags: ["precipitation", "co2-test"]
610
+ },
611
+ {
612
+ id: "co2-caoh2-2",
613
+ name: "\u4E8C\u6C27\u5316\u78B3\u901A\u5165\u6F84\u6E05\u77F3\u7070\u6C34",
614
+ latex: "\\ce{CO2 + Ca(OH)2 -> CaCO3 v + H2O}",
615
+ category: "reaction",
616
+ description: "CO\u2082 \u68C0\u9A8C\u65B9\u6CD5",
617
+ tags: ["precipitation", "co2-test"]
618
+ },
619
+ // --- 金属与盐溶液反应 ---
620
+ {
621
+ id: "fe-cuso4",
622
+ name: "\u94C1\u4E0E\u786B\u9178\u94DC\u6EB6\u6DB2\u53CD\u5E94",
623
+ latex: "\\ce{Fe + CuSO4 -> FeSO4 + Cu}",
624
+ category: "reaction",
625
+ description: "\u6E7F\u6CD5\u70BC\u94DC / \u94C1\u7F6E\u6362\u94DC",
626
+ tags: ["displacement", "metal", "redox"]
627
+ },
628
+ {
629
+ id: "cu-agno3",
630
+ name: "\u94DC\u548C\u785D\u9178\u94F6\u6EB6\u6DB2\u53CD\u5E94",
631
+ latex: "\\ce{Cu + 2AgNO3 -> Cu(NO3)2 + 2Ag}",
632
+ category: "reaction",
633
+ description: "\u94DC\u7F6E\u6362\u94F6",
634
+ tags: ["displacement", "metal", "redox"]
635
+ },
636
+ // --- 金属与氧气反应 ---
637
+ {
638
+ id: "al-o2",
639
+ name: "\u94DD\u4E0E\u6C27\u6C14\u53CD\u5E94",
640
+ latex: "\\ce{4Al + 3O2 ->[\u70B9\u71C3] 2Al2O3}",
641
+ category: "reaction",
642
+ description: "\u94DD\u5728\u6C27\u6C14\u4E2D\u71C3\u70E7",
643
+ tags: ["combustion", "metal", "oxidation"]
644
+ },
645
+ {
646
+ id: "mg-o2",
647
+ name: "\u9541\u5728\u7A7A\u6C14\u4E2D\u71C3\u70E7",
648
+ latex: "\\ce{2Mg + O2 ->[\u70B9\u71C3] 2MgO}",
649
+ category: "reaction",
650
+ description: "\u9541\u5E26\u71C3\u70E7\u53D1\u51FA\u8000\u773C\u767D\u5149",
651
+ tags: ["combustion", "metal", "oxidation"]
652
+ },
653
+ {
654
+ id: "fe-o2",
655
+ name: "\u94C1\u5728\u6C27\u6C14\u4E2D\u71C3\u70E7",
656
+ latex: "\\ce{3Fe + 2O2 ->[\u70B9\u71C3] Fe3O4}",
657
+ category: "reaction",
658
+ description: "\u94C1\u4E1D\u5728\u6C27\u6C14\u4E2D\u5267\u70C8\u71C3\u70E7",
659
+ tags: ["combustion", "metal", "oxidation"]
660
+ },
661
+ {
662
+ id: "cu-o2",
663
+ name: "\u94DC\u5728\u7A7A\u6C14\u4E2D\u53D7\u70ED",
664
+ latex: "\\ce{2Cu + O2 ->[\u52A0\u70ED] 2CuO}",
665
+ category: "reaction",
666
+ description: "\u94DC\u8868\u9762\u53D8\u9ED1",
667
+ tags: ["oxidation", "metal", "heating"]
668
+ },
669
+ // --- 非金属燃烧 ---
670
+ {
671
+ id: "p-o2",
672
+ name: "\u7EA2\u78F7\u5728\u7A7A\u6C14\u4E2D\u71C3\u70E7",
673
+ latex: "\\ce{4P + 5O2 ->[\u70B9\u71C3] 2P2O5}",
674
+ category: "reaction",
675
+ description: "\u4EA7\u751F\u5927\u91CF\u767D\u70DF",
676
+ tags: ["combustion", "nonmetal", "oxidation"]
677
+ },
678
+ {
679
+ id: "s-o2",
680
+ name: "\u786B\u7C89\u5728\u7A7A\u6C14\u4E2D\u71C3\u70E7",
681
+ latex: "\\ce{S + O2 ->[\u70B9\u71C3] SO2}",
682
+ category: "reaction",
683
+ description: "\u4EA7\u751F\u523A\u6FC0\u6027\u6C14\u5473\u6C14\u4F53",
684
+ tags: ["combustion", "nonmetal", "oxidation"]
685
+ },
686
+ {
687
+ id: "c-o2-full",
688
+ name: "\u78B3\u5728\u6C27\u6C14\u4E2D\u5145\u5206\u71C3\u70E7",
689
+ latex: "\\ce{C + O2 ->[\u70B9\u71C3] CO2}",
690
+ category: "reaction",
691
+ description: "\u78B3\u5B8C\u5168\u71C3\u70E7",
692
+ tags: ["combustion", "nonmetal", "oxidation"]
693
+ },
694
+ {
695
+ id: "c-o2-partial",
696
+ name: "\u78B3\u5728\u6C27\u6C14\u4E2D\u4E0D\u5145\u5206\u71C3\u70E7",
697
+ latex: "\\ce{2C + O2 ->[\u70B9\u71C3] 2CO}",
698
+ category: "reaction",
699
+ description: "\u78B3\u4E0D\u5B8C\u5168\u71C3\u70E7\u751F\u6210\u4E00\u6C27\u5316\u78B3",
700
+ tags: ["combustion", "nonmetal", "incomplete"]
701
+ },
702
+ {
703
+ id: "h2-o2",
704
+ name: "\u6C22\u6C14\u5728\u6C27\u6C14\u4E2D\u71C3\u70E7",
705
+ latex: "\\ce{2H2 + O2 ->[\u70B9\u71C3] 2H2O}",
706
+ category: "reaction",
707
+ description: "\u6C22\u6C14\u71C3\u70E7\u751F\u6210\u6C34",
708
+ tags: ["combustion", "hydrogen", "clean-energy"]
709
+ },
710
+ {
711
+ id: "co-o2",
712
+ name: "\u4E00\u6C27\u5316\u78B3\u71C3\u70E7",
713
+ latex: "\\ce{2CO + O2 ->[\u70B9\u71C3] 2CO2}",
714
+ category: "reaction",
715
+ description: "CO \u71C3\u70E7\u4EA7\u751F\u84DD\u8272\u706B\u7130",
716
+ tags: ["combustion", "carbon-monoxide"]
717
+ },
718
+ {
719
+ id: "ch4-combustion",
720
+ name: "\u7532\u70F7\u71C3\u70E7",
721
+ latex: "\\ce{CH4 + 2O2 ->[\u70B9\u71C3] CO2 + 2H2O}",
722
+ category: "reaction",
723
+ description: "\u5929\u7136\u6C14\u4E3B\u8981\u6210\u5206\u71C3\u70E7",
724
+ tags: ["combustion", "organic", "alkane"]
725
+ },
726
+ // --- 金属与酸反应 ---
727
+ {
728
+ id: "zn-h2so4",
729
+ name: "\u950C\u548C\u7A00\u786B\u9178\u53CD\u5E94",
730
+ latex: "\\ce{Zn + H2SO4 -> ZnSO4 + H2 ^}",
731
+ category: "reaction",
732
+ description: "\u5B9E\u9A8C\u5BA4\u5236\u6C22\u6C14",
733
+ tags: ["displacement", "metal-acid", "hydrogen"]
734
+ },
735
+ {
736
+ id: "fe-h2so4",
737
+ name: "\u94C1\u548C\u7A00\u786B\u9178\u53CD\u5E94",
738
+ latex: "\\ce{Fe + H2SO4 -> FeSO4 + H2 ^}",
739
+ category: "reaction",
740
+ description: "\u94C1\u4E0E\u7A00\u786B\u9178\u7F6E\u6362\u53CD\u5E94",
741
+ tags: ["displacement", "metal-acid", "hydrogen"]
742
+ },
743
+ {
744
+ id: "mg-h2so4",
745
+ name: "\u9541\u548C\u7A00\u786B\u9178\u53CD\u5E94",
746
+ latex: "\\ce{Mg + H2SO4 -> MgSO4 + H2 ^}",
747
+ category: "reaction",
748
+ description: "\u9541\u4E0E\u7A00\u786B\u9178\u5267\u70C8\u53CD\u5E94",
749
+ tags: ["displacement", "metal-acid", "hydrogen"]
750
+ },
751
+ {
752
+ id: "al-h2so4",
753
+ name: "\u94DD\u548C\u7A00\u786B\u9178\u53CD\u5E94",
754
+ latex: "\\ce{2Al + 3H2SO4 -> Al2(SO4)3 + 3H2 ^}",
755
+ category: "reaction",
756
+ description: "\u94DD\u4E0E\u7A00\u786B\u9178\u7F6E\u6362\u53CD\u5E94",
757
+ tags: ["displacement", "metal-acid", "hydrogen"]
758
+ },
759
+ {
760
+ id: "zn-hcl",
761
+ name: "\u950C\u548C\u7A00\u76D0\u9178\u53CD\u5E94",
762
+ latex: "\\ce{Zn + 2HCl -> ZnCl2 + H2 ^}",
763
+ category: "reaction",
764
+ description: "\u950C\u4E0E\u76D0\u9178\u53CD\u5E94\u5236\u6C22\u6C14",
765
+ tags: ["displacement", "metal-acid", "hydrogen"]
766
+ },
767
+ {
768
+ id: "fe-hcl",
769
+ name: "\u94C1\u548C\u7A00\u76D0\u9178\u53CD\u5E94",
770
+ latex: "\\ce{Fe + 2HCl -> FeCl2 + H2 ^}",
771
+ category: "reaction",
772
+ description: "\u94C1\u4E0E\u7A00\u76D0\u9178\u7F6E\u6362\u53CD\u5E94",
773
+ tags: ["displacement", "metal-acid", "hydrogen"]
774
+ },
775
+ {
776
+ id: "mg-hcl",
777
+ name: "\u9541\u548C\u7A00\u76D0\u9178\u53CD\u5E94",
778
+ latex: "\\ce{Mg + 2HCl -> MgCl2 + H2 ^}",
779
+ category: "reaction",
780
+ description: "\u9541\u4E0E\u7A00\u76D0\u9178\u5267\u70C8\u53CD\u5E94",
781
+ tags: ["displacement", "metal-acid", "hydrogen"]
782
+ },
783
+ {
784
+ id: "al-hcl",
785
+ name: "\u94DD\u548C\u7A00\u76D0\u9178\u53CD\u5E94",
786
+ latex: "\\ce{2Al + 6HCl -> 2AlCl3 + 3H2 ^}",
787
+ category: "reaction",
788
+ description: "\u94DD\u4E0E\u7A00\u76D0\u9178\u7F6E\u6362\u53CD\u5E94",
789
+ tags: ["displacement", "metal-acid", "hydrogen"]
790
+ },
791
+ // --- 还原反应 ---
792
+ {
793
+ id: "h2-cuo",
794
+ name: "\u6C22\u6C14\u8FD8\u539F\u6C27\u5316\u94DC",
795
+ latex: "\\ce{H2 + CuO ->[\u52A0\u70ED] Cu + H2O}",
796
+ category: "reaction",
797
+ description: "\u6C22\u6C14\u8FD8\u539F\u9ED1\u8272\u6C27\u5316\u94DC",
798
+ tags: ["reduction", "hydrogen", "heating"]
799
+ },
800
+ {
801
+ id: "c-cuo",
802
+ name: "\u78B3\u8FD8\u539F\u6C27\u5316\u94DC",
803
+ latex: "\\ce{C + 2CuO ->[\u9AD8\u6E29] 2Cu + CO2 ^}",
804
+ category: "reaction",
805
+ description: "\u78B3\u8FD8\u539F\u6C27\u5316\u94DC",
806
+ tags: ["reduction", "carbon", "heating"]
807
+ },
808
+ {
809
+ id: "c-fe2o3",
810
+ name: "\u78B3\u8FD8\u539F\u6C27\u5316\u94C1",
811
+ latex: "\\ce{3C + 2Fe2O3 ->[\u9AD8\u6E29] 4Fe + 3CO2 ^}",
812
+ category: "reaction",
813
+ description: "\u78B3\u8FD8\u539F\u6C27\u5316\u94C1\uFF08\u70BC\u94C1\uFF09",
814
+ tags: ["reduction", "carbon", "iron", "heating", "industrial"]
815
+ },
816
+ {
817
+ id: "co-cuo",
818
+ name: "\u4E00\u6C27\u5316\u78B3\u8FD8\u539F\u6C27\u5316\u94DC",
819
+ latex: "\\ce{CO + CuO ->[\u52A0\u70ED] Cu + CO2}",
820
+ category: "reaction",
821
+ description: "CO \u8FD8\u539F\u6C27\u5316\u94DC",
822
+ tags: ["reduction", "carbon-monoxide", "heating"]
823
+ },
824
+ {
825
+ id: "co-fe2o3",
826
+ name: "\u4E00\u6C27\u5316\u78B3\u8FD8\u539F\u6C27\u5316\u94C1",
827
+ latex: "\\ce{3CO + Fe2O3 ->[\u9AD8\u6E29] 2Fe + 3CO2}",
828
+ category: "reaction",
829
+ description: "\u9AD8\u7089\u70BC\u94C1\u4E3B\u8981\u53CD\u5E94",
830
+ tags: ["reduction", "carbon-monoxide", "iron", "heating", "industrial"]
831
+ },
832
+ // --- 酸碱中和 ---
833
+ {
834
+ id: "hcl-naoh",
835
+ name: "\u76D0\u9178\u4E0E\u6C22\u6C27\u5316\u94A0\u53CD\u5E94",
836
+ latex: "\\ce{HCl + NaOH -> NaCl + H2O}",
837
+ category: "reaction",
838
+ description: "\u9178\u78B1\u4E2D\u548C\u53CD\u5E94",
839
+ tags: ["neutralization", "acid-base"]
840
+ },
841
+ {
842
+ id: "naoh-hcl",
843
+ name: "\u6C22\u6C27\u5316\u94A0\u4E0E\u76D0\u9178\u53CD\u5E94",
844
+ latex: "\\ce{NaOH + HCl -> NaCl + H2O}",
845
+ category: "reaction",
846
+ description: "\u9178\u78B1\u4E2D\u548C\u53CD\u5E94",
847
+ tags: ["neutralization", "acid-base"]
848
+ },
849
+ {
850
+ id: "h2so4-naoh",
851
+ name: "\u786B\u9178\u4E0E\u6C22\u6C27\u5316\u94A0\u53CD\u5E94",
852
+ latex: "\\ce{H2SO4 + 2NaOH -> Na2SO4 + 2H2O}",
853
+ category: "reaction",
854
+ description: "\u786B\u9178\u4E0E\u70E7\u78B1\u4E2D\u548C",
855
+ tags: ["neutralization", "acid-base"]
856
+ },
857
+ {
858
+ id: "caoh2-h2so4",
859
+ name: "\u6C22\u6C27\u5316\u9499\u4E0E\u786B\u9178\u53CD\u5E94",
860
+ latex: "\\ce{Ca(OH)2 + H2SO4 -> CaSO4 + 2H2O}",
861
+ category: "reaction",
862
+ description: "\u719F\u77F3\u7070\u4E0E\u786B\u9178\u4E2D\u548C",
863
+ tags: ["neutralization", "acid-base"]
864
+ },
865
+ // --- 盐与酸反应 ---
866
+ {
867
+ id: "caco3-hcl",
868
+ name: "\u78B3\u9178\u9499\u4E0E\u76D0\u9178\u53CD\u5E94",
869
+ latex: "\\ce{CaCO3 + 2HCl -> CaCl2 + H2O + CO2 ^}",
870
+ category: "reaction",
871
+ description: "\u5B9E\u9A8C\u5BA4\u5236\u4E8C\u6C27\u5316\u78B3",
872
+ tags: ["gas-preparation", "carbonate", "acid"]
873
+ },
874
+ {
875
+ id: "na2co3-hcl",
876
+ name: "\u78B3\u9178\u94A0\u4E0E\u76D0\u9178\u53CD\u5E94",
877
+ latex: "\\ce{Na2CO3 + 2HCl -> 2NaCl + H2O + CO2 ^}",
878
+ category: "reaction",
879
+ description: "\u7EAF\u78B1\u4E0E\u76D0\u9178\u53CD\u5E94",
880
+ tags: ["carbonate", "acid", "gas"]
881
+ },
882
+ // --- 盐与碱反应 ---
883
+ {
884
+ id: "cuso4-naoh",
885
+ name: "\u786B\u9178\u94DC\u4E0E\u6C22\u6C27\u5316\u94A0\u53CD\u5E94",
886
+ latex: "\\ce{CuSO4 + 2NaOH -> Cu(OH)2 v + Na2SO4}",
887
+ category: "reaction",
888
+ description: "\u4EA7\u751F\u84DD\u8272\u6C89\u6DC0",
889
+ tags: ["precipitation", "copper", "base"]
890
+ },
891
+ // --- 金属氧化物与酸 ---
892
+ {
893
+ id: "cuo-h2so4",
894
+ name: "\u6C27\u5316\u94DC\u4E0E\u7A00\u786B\u9178\u53CD\u5E94",
895
+ latex: "\\ce{CuO + H2SO4 -> CuSO4 + H2O}",
896
+ category: "reaction",
897
+ description: "\u9ED1\u8272\u6C27\u5316\u94DC\u6EB6\u89E3",
898
+ tags: ["metal-oxide", "acid", "dissolution"]
899
+ },
900
+ // --- 两性反应 ---
901
+ {
902
+ id: "al-naoh",
903
+ name: "\u94DD\u4E0E\u6C22\u6C27\u5316\u94A0\u53CD\u5E94",
904
+ latex: "\\ce{2Al + 2NaOH + 2H2O -> 2NaAlO2 + 3H2 ^}",
905
+ category: "reaction",
906
+ description: "\u94DD\u7684\u4E24\u6027\u4F53\u73B0",
907
+ tags: ["amphoteric", "aluminum", "hydrogen"]
908
+ },
909
+ {
910
+ id: "si-naoh",
911
+ name: "\u7845\u4E0E\u6C22\u6C27\u5316\u94A0\u53CD\u5E94",
912
+ latex: "\\ce{Si + 2NaOH + H2O -> Na2SiO3 + 2H2 ^}",
913
+ category: "reaction",
914
+ description: "\u7845\u4E0E\u5F3A\u78B1\u53CD\u5E94",
915
+ tags: ["silicon", "base", "hydrogen"]
916
+ },
917
+ // --- CO₂ 与碱 ---
918
+ {
919
+ id: "co2-naoh",
920
+ name: "\u4E8C\u6C27\u5316\u78B3\u4E0E\u6C22\u6C27\u5316\u94A0\u53CD\u5E94",
921
+ latex: "\\ce{CO2 + 2NaOH -> Na2CO3 + H2O}",
922
+ category: "reaction",
923
+ description: "CO\u2082 \u4E0E\u70E7\u78B1\u53CD\u5E94",
924
+ tags: ["carbon-dioxide", "base", "absorption"]
925
+ },
926
+ // --- 沉淀反应 ---
927
+ {
928
+ id: "bacl2-na2so4",
929
+ name: "\u6C2F\u5316\u94A1\u4E0E\u786B\u9178\u94A0\u53CD\u5E94",
930
+ latex: "\\ce{BaCl2 + Na2SO4 -> BaSO4 v + 2NaCl}",
931
+ category: "reaction",
932
+ description: "\u751F\u6210\u4E0D\u6EB6\u4E8E\u9178\u7684\u767D\u8272\u6C89\u6DC0",
933
+ tags: ["precipitation", "barium", "sulfate-test"]
934
+ },
935
+ // --- 卤素 & 氧化还原 ---
936
+ {
937
+ id: "cl2-naoh",
938
+ name: "\u6C2F\u6C14\u4E0E\u6C22\u6C27\u5316\u94A0\u53CD\u5E94",
939
+ latex: "\\ce{Cl2 + 2NaOH -> NaCl + NaClO + H2O}",
940
+ category: "reaction",
941
+ description: "\u6C2F\u6C14\u5C3E\u6C14\u5904\u7406 / \u5236\u6F02\u767D\u6DB2",
942
+ tags: ["halogen", "disproportionation", "redox"]
943
+ },
944
+ {
945
+ id: "so2-cl2",
946
+ name: "\u4E8C\u6C27\u5316\u786B\u4E0E\u6C2F\u6C34\u53CD\u5E94",
947
+ latex: "\\ce{SO2 + Cl2 + 2H2O -> H2SO4 + 2HCl}",
948
+ category: "reaction",
949
+ description: "SO\u2082 \u4F7F\u6C2F\u6C34\u892A\u8272",
950
+ tags: ["redox", "bleaching", "sulfur"]
951
+ },
952
+ {
953
+ id: "feoh2-oxidation",
954
+ name: "\u6C22\u6C27\u5316\u4E9A\u94C1\u88AB\u6C27\u5316",
955
+ latex: "\\ce{4Fe(OH)2 + O2 + 2H2O -> 4Fe(OH)3}",
956
+ category: "reaction",
957
+ description: "\u767D\u8272\u6C89\u6DC0\u8FC5\u901F\u53D8\u7070\u7EFF\u8272\u6700\u7EC8\u53D8\u7EA2\u8910\u8272",
958
+ tags: ["oxidation", "iron", "color-change"]
959
+ },
960
+ {
961
+ id: "feso4-oxidation",
962
+ name: "\u786B\u9178\u4E9A\u94C1\u88AB\u6C27\u5316",
963
+ latex: "\\ce{4FeSO4 + O2 + 2H2SO4 -> 2Fe2(SO4)3 + 2H2O}",
964
+ category: "reaction",
965
+ description: "Fe\xB2\u207A \u5728\u9178\u6027\u6761\u4EF6\u4E0B\u88AB\u6C27\u5316\u4E3A Fe\xB3\u207A",
966
+ tags: ["oxidation", "iron", "redox"]
967
+ },
968
+ // --- 浓酸反应 ---
969
+ {
970
+ id: "cu-h2so4-conc",
971
+ name: "\u6D53\u786B\u9178\u4E0E\u94DC\u53CD\u5E94",
972
+ latex: "\\ce{Cu + 2H2SO4 ->[\u52A0\u70ED] CuSO4 + SO2 ^ + 2H2O}",
973
+ category: "reaction",
974
+ description: "\u6D53\u786B\u9178\u7684\u5F3A\u6C27\u5316\u6027",
975
+ tags: ["concentrated-acid", "redox", "copper", "heating"]
976
+ },
977
+ {
978
+ id: "cu-hno3-conc",
979
+ name: "\u6D53\u785D\u9178\u4E0E\u94DC\u53CD\u5E94",
980
+ latex: "\\ce{Cu + 4HNO3 -> Cu(NO3)2 + 2NO2 ^ + 2H2O}",
981
+ category: "reaction",
982
+ description: "\u6D53\u785D\u9178\u4E0E\u94DC\u53CD\u5E94\u751F\u6210\u7EA2\u68D5\u8272\u6C14\u4F53",
983
+ tags: ["concentrated-acid", "redox", "copper", "nitrogen-dioxide"]
984
+ },
985
+ // --- 碳酸氢盐反应 ---
986
+ {
987
+ id: "cahco32-naoh-few",
988
+ name: "\u78B3\u9178\u6C22\u9499\u4E0E\u5C11\u91CF\u6C22\u6C27\u5316\u94A0\u53CD\u5E94",
989
+ latex: "\\ce{Ca(HCO3)2 + NaOH -> CaCO3 v + NaHCO3 + H2O}",
990
+ category: "reaction",
991
+ description: "\u5C11\u91CF\u78B1\u65F6\u7684\u5206\u6B65\u6C89\u6DC0",
992
+ tags: ["bicarbonate", "precipitation", "stoichiometry"]
993
+ },
994
+ {
995
+ id: "cahco32-naoh-excess",
996
+ name: "\u78B3\u9178\u6C22\u9499\u4E0E\u8FC7\u91CF\u6C22\u6C27\u5316\u94A0\u53CD\u5E94",
997
+ latex: "\\ce{Ca(HCO3)2 + 2NaOH -> CaCO3 v + Na2CO3 + 2H2O}",
998
+ category: "reaction",
999
+ description: "\u8FC7\u91CF\u78B1\u5B8C\u5168\u53CD\u5E94",
1000
+ tags: ["bicarbonate", "precipitation", "stoichiometry"]
478
1001
  }
479
1002
  ];
480
1003
  var ELECTROCHEM_TEMPLATES = [
@@ -495,10 +1018,183 @@ var ELECTROCHEM_TEMPLATES = [
495
1018
  tags: ["faraday", "electrolysis"]
496
1019
  }
497
1020
  ];
1021
+ var ION_TEMPLATES = [
1022
+ // --- 阳离子 (Cations) ---
1023
+ { id: "ion-li+", name: "\u9502\u79BB\u5B50", latex: "\\ce{Li+}", category: "ion", description: "Li\u207A", tags: ["cation", "alkali-metal"] },
1024
+ { id: "ion-na+", name: "\u94A0\u79BB\u5B50", latex: "\\ce{Na+}", category: "ion", description: "Na\u207A", tags: ["cation", "alkali-metal"] },
1025
+ { id: "ion-k+", name: "\u94BE\u79BB\u5B50", latex: "\\ce{K+}", category: "ion", description: "K\u207A", tags: ["cation", "alkali-metal"] },
1026
+ { id: "ion-nh4+", name: "\u94F5\u6839\u79BB\u5B50", latex: "\\ce{NH4+}", category: "ion", description: "NH\u2084\u207A", tags: ["cation", "polyatomic"] },
1027
+ { id: "ion-ca2+", name: "\u9499\u79BB\u5B50", latex: "\\ce{Ca^{2+}}", category: "ion", description: "Ca\xB2\u207A", tags: ["cation", "alkaline-earth"] },
1028
+ { id: "ion-mg2+", name: "\u9541\u79BB\u5B50", latex: "\\ce{Mg^{2+}}", category: "ion", description: "Mg\xB2\u207A", tags: ["cation", "alkaline-earth"] },
1029
+ { id: "ion-fe2+", name: "\u4E9A\u94C1\u79BB\u5B50", latex: "\\ce{Fe^{2+}}", category: "ion", description: "Fe\xB2\u207A", tags: ["cation", "transition-metal", "low-valence"] },
1030
+ { id: "ion-fe3+", name: "\u94C1\u79BB\u5B50", latex: "\\ce{Fe^{3+}}", category: "ion", description: "Fe\xB3\u207A", tags: ["cation", "transition-metal", "high-valence"] },
1031
+ { id: "ion-cu2+", name: "\u94DC\u79BB\u5B50", latex: "\\ce{Cu^{2+}}", category: "ion", description: "Cu\xB2\u207A", tags: ["cation", "transition-metal"] },
1032
+ { id: "ion-zn2+", name: "\u950C\u79BB\u5B50", latex: "\\ce{Zn^{2+}}", category: "ion", description: "Zn\xB2\u207A", tags: ["cation", "transition-metal"] },
1033
+ { id: "ion-ag+", name: "\u94F6\u79BB\u5B50", latex: "\\ce{Ag+}", category: "ion", description: "Ag\u207A", tags: ["cation", "transition-metal"] },
1034
+ { id: "ion-al3+", name: "\u94DD\u79BB\u5B50", latex: "\\ce{Al^{3+}}", category: "ion", description: "Al\xB3\u207A", tags: ["cation", "post-transition"] },
1035
+ { id: "ion-h+", name: "\u6C22\u79BB\u5B50", latex: "\\ce{H+}", category: "ion", description: "H\u207A", tags: ["cation", "acid"] },
1036
+ // --- 阴离子 (Anions) ---
1037
+ { id: "ion-f-", name: "\u6C1F\u79BB\u5B50", latex: "\\ce{F-}", category: "ion", description: "F\u207B", tags: ["anion", "halogen"] },
1038
+ { id: "ion-cl-", name: "\u6C2F\u79BB\u5B50", latex: "\\ce{Cl-}", category: "ion", description: "Cl\u207B", tags: ["anion", "halogen"] },
1039
+ { id: "ion-br-", name: "\u6EB4\u79BB\u5B50", latex: "\\ce{Br-}", category: "ion", description: "Br\u207B", tags: ["anion", "halogen"] },
1040
+ { id: "ion-i-", name: "\u7898\u79BB\u5B50", latex: "\\ce{I-}", category: "ion", description: "I\u207B", tags: ["anion", "halogen"] },
1041
+ { id: "ion-o2-", name: "\u6C27\u79BB\u5B50", latex: "\\ce{O^{2-}}", category: "ion", description: "O\xB2\u207B", tags: ["anion", "oxide"] },
1042
+ { id: "ion-s2-", name: "\u786B\u79BB\u5B50", latex: "\\ce{S^{2-}}", category: "ion", description: "S\xB2\u207B", tags: ["anion", "sulfide"] },
1043
+ { id: "ion-oh-", name: "\u6C22\u6C27\u6839\u79BB\u5B50", latex: "\\ce{OH-}", category: "ion", description: "OH\u207B", tags: ["anion", "base", "polyatomic"] },
1044
+ { id: "ion-no3-", name: "\u785D\u9178\u6839\u79BB\u5B50", latex: "\\ce{NO3-}", category: "ion", description: "NO\u2083\u207B", tags: ["anion", "oxyanion", "polyatomic"] },
1045
+ { id: "ion-mno4-", name: "\u9AD8\u9530\u9178\u6839\u79BB\u5B50", latex: "\\ce{MnO4-}", category: "ion", description: "MnO\u2084\u207B", tags: ["anion", "oxyanion", "polyatomic", "oxidizing"] },
1046
+ { id: "ion-clo-", name: "\u6B21\u6C2F\u9178\u6839\u79BB\u5B50", latex: "\\ce{ClO-}", category: "ion", description: "ClO\u207B", tags: ["anion", "oxyanion", "polyatomic", "bleaching"] },
1047
+ { 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"] },
1048
+ { 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"] },
1049
+ { 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"] },
1050
+ { 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"] },
1051
+ { 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"] },
1052
+ { id: "ion-hco3-", name: "\u78B3\u9178\u6C22\u6839\u79BB\u5B50", latex: "\\ce{HCO3-}", category: "ion", description: "HCO\u2083\u207B", tags: ["anion", "bicarbonate", "polyatomic"] },
1053
+ { id: "ion-hso3-", name: "\u4E9A\u786B\u9178\u6C22\u6839\u79BB\u5B50", latex: "\\ce{HSO3-}", category: "ion", description: "HSO\u2083\u207B", tags: ["anion", "bisulfite", "polyatomic"] },
1054
+ { id: "ion-hso4-", name: "\u786B\u9178\u6C22\u6839\u79BB\u5B50", latex: "\\ce{HSO4-}", category: "ion", description: "HSO\u2084\u207B", tags: ["anion", "bisulfate", "polyatomic"] },
1055
+ { id: "ion-ch3coo-", name: "\u918B\u9178\u6839\u79BB\u5B50", latex: "\\ce{CH3COO-}", category: "ion", description: "CH\u2083COO\u207B", tags: ["anion", "acetate", "organic", "polyatomic"] },
1056
+ { id: "ion-cn-", name: "\u6C30\u6839\u79BB\u5B50", latex: "\\ce{CN-}", category: "ion", description: "CN\u207B", tags: ["anion", "cyanide", "polyatomic", "toxic"] },
1057
+ { id: "ion-scn-", name: "\u786B\u6C30\u9178\u6839\u79BB\u5B50", latex: "\\ce{SCN-}", category: "ion", description: "SCN\u207B", tags: ["anion", "thiocyanate", "polyatomic"] },
1058
+ // --- 配离子 (Complex Ions) ---
1059
+ { 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"] }
1060
+ ];
1061
+ var ELEMENT_TEMPLATES = [
1062
+ // ---- 第1周期 ----
1063
+ { id: "elem-H", name: "\u6C22", latex: "\\ce{H}", category: "element", description: "Hydrogen", tags: ["nonmetal", "period-1", "group-1"] },
1064
+ { id: "elem-He", name: "\u6C26", latex: "\\ce{He}", category: "element", description: "Helium", tags: ["noble-gas", "period-1", "group-18"] },
1065
+ // ---- 第2周期 ----
1066
+ { id: "elem-Li", name: "\u9502", latex: "\\ce{Li}", category: "element", description: "Lithium", tags: ["alkali-metal", "period-2", "group-1"] },
1067
+ { id: "elem-Be", name: "\u94CD", latex: "\\ce{Be}", category: "element", description: "Beryllium", tags: ["alkaline-earth", "period-2", "group-2"] },
1068
+ { id: "elem-B", name: "\u787C", latex: "\\ce{B}", category: "element", description: "Boron", tags: ["metalloid", "period-2", "group-13"] },
1069
+ { id: "elem-C", name: "\u78B3", latex: "\\ce{C}", category: "element", description: "Carbon", tags: ["nonmetal", "period-2", "group-14"] },
1070
+ { id: "elem-N", name: "\u6C2E", latex: "\\ce{N}", category: "element", description: "Nitrogen", tags: ["nonmetal", "period-2", "group-15"] },
1071
+ { id: "elem-O", name: "\u6C27", latex: "\\ce{O}", category: "element", description: "Oxygen", tags: ["nonmetal", "period-2", "group-16"] },
1072
+ { id: "elem-F", name: "\u6C1F", latex: "\\ce{F}", category: "element", description: "Fluorine", tags: ["halogen", "period-2", "group-17"] },
1073
+ { id: "elem-Ne", name: "\u6C16", latex: "\\ce{Ne}", category: "element", description: "Neon", tags: ["noble-gas", "period-2", "group-18"] },
1074
+ // ---- 第3周期 ----
1075
+ { id: "elem-Na", name: "\u94A0", latex: "\\ce{Na}", category: "element", description: "Sodium", tags: ["alkali-metal", "period-3", "group-1"] },
1076
+ { id: "elem-Mg", name: "\u9541", latex: "\\ce{Mg}", category: "element", description: "Magnesium", tags: ["alkaline-earth", "period-3", "group-2"] },
1077
+ { id: "elem-Al", name: "\u94DD", latex: "\\ce{Al}", category: "element", description: "Aluminium", tags: ["metal", "period-3", "group-13"] },
1078
+ { id: "elem-Si", name: "\u7845", latex: "\\ce{Si}", category: "element", description: "Silicon", tags: ["metalloid", "period-3", "group-14"] },
1079
+ { id: "elem-P", name: "\u78F7", latex: "\\ce{P}", category: "element", description: "Phosphorus", tags: ["nonmetal", "period-3", "group-15"] },
1080
+ { id: "elem-S", name: "\u786B", latex: "\\ce{S}", category: "element", description: "Sulfur", tags: ["nonmetal", "period-3", "group-16"] },
1081
+ { id: "elem-Cl", name: "\u6C2F", latex: "\\ce{Cl}", category: "element", description: "Chlorine", tags: ["halogen", "period-3", "group-17"] },
1082
+ { id: "elem-Ar", name: "\u6C29", latex: "\\ce{Ar}", category: "element", description: "Argon", tags: ["noble-gas", "period-3", "group-18"] },
1083
+ // ---- 第4周期 ----
1084
+ { id: "elem-K", name: "\u94BE", latex: "\\ce{K}", category: "element", description: "Potassium", tags: ["alkali-metal", "period-4", "group-1"] },
1085
+ { id: "elem-Ca", name: "\u9499", latex: "\\ce{Ca}", category: "element", description: "Calcium", tags: ["alkaline-earth", "period-4", "group-2"] },
1086
+ { id: "elem-Sc", name: "\u94AA", latex: "\\ce{Sc}", category: "element", description: "Scandium", tags: ["transition-metal", "period-4", "group-3"] },
1087
+ { id: "elem-Ti", name: "\u949B", latex: "\\ce{Ti}", category: "element", description: "Titanium", tags: ["transition-metal", "period-4", "group-4"] },
1088
+ { id: "elem-V", name: "\u9492", latex: "\\ce{V}", category: "element", description: "Vanadium", tags: ["transition-metal", "period-4", "group-5"] },
1089
+ { id: "elem-Cr", name: "\u94EC", latex: "\\ce{Cr}", category: "element", description: "Chromium", tags: ["transition-metal", "period-4", "group-6"] },
1090
+ { id: "elem-Mn", name: "\u9530", latex: "\\ce{Mn}", category: "element", description: "Manganese", tags: ["transition-metal", "period-4", "group-7"] },
1091
+ { id: "elem-Fe", name: "\u94C1", latex: "\\ce{Fe}", category: "element", description: "Iron", tags: ["transition-metal", "period-4", "group-8"] },
1092
+ { id: "elem-Co", name: "\u94B4", latex: "\\ce{Co}", category: "element", description: "Cobalt", tags: ["transition-metal", "period-4", "group-9"] },
1093
+ { id: "elem-Ni", name: "\u954D", latex: "\\ce{Ni}", category: "element", description: "Nickel", tags: ["transition-metal", "period-4", "group-10"] },
1094
+ { id: "elem-Cu", name: "\u94DC", latex: "\\ce{Cu}", category: "element", description: "Copper", tags: ["transition-metal", "period-4", "group-11"] },
1095
+ { id: "elem-Zn", name: "\u950C", latex: "\\ce{Zn}", category: "element", description: "Zinc", tags: ["transition-metal", "period-4", "group-12"] },
1096
+ { id: "elem-Ga", name: "\u9553", latex: "\\ce{Ga}", category: "element", description: "Gallium", tags: ["metal", "period-4", "group-13"] },
1097
+ { id: "elem-Ge", name: "\u9517", latex: "\\ce{Ge}", category: "element", description: "Germanium", tags: ["metalloid", "period-4", "group-14"] },
1098
+ { id: "elem-As", name: "\u7837", latex: "\\ce{As}", category: "element", description: "Arsenic", tags: ["metalloid", "period-4", "group-15"] },
1099
+ { id: "elem-Se", name: "\u7852", latex: "\\ce{Se}", category: "element", description: "Selenium", tags: ["nonmetal", "period-4", "group-16"] },
1100
+ { id: "elem-Br", name: "\u6EB4", latex: "\\ce{Br}", category: "element", description: "Bromine", tags: ["halogen", "period-4", "group-17"] },
1101
+ { id: "elem-Kr", name: "\u6C2A", latex: "\\ce{Kr}", category: "element", description: "Krypton", tags: ["noble-gas", "period-4", "group-18"] },
1102
+ // ---- 第5周期 ----
1103
+ { id: "elem-Rb", name: "\u94F7", latex: "\\ce{Rb}", category: "element", description: "Rubidium", tags: ["alkali-metal", "period-5", "group-1"] },
1104
+ { id: "elem-Sr", name: "\u9536", latex: "\\ce{Sr}", category: "element", description: "Strontium", tags: ["alkaline-earth", "period-5", "group-2"] },
1105
+ { id: "elem-Y", name: "\u9487", latex: "\\ce{Y}", category: "element", description: "Yttrium", tags: ["transition-metal", "period-5", "group-3"] },
1106
+ { id: "elem-Zr", name: "\u9506", latex: "\\ce{Zr}", category: "element", description: "Zirconium", tags: ["transition-metal", "period-5", "group-4"] },
1107
+ { id: "elem-Nb", name: "\u94CC", latex: "\\ce{Nb}", category: "element", description: "Niobium", tags: ["transition-metal", "period-5", "group-5"] },
1108
+ { id: "elem-Mo", name: "\u94BC", latex: "\\ce{Mo}", category: "element", description: "Molybdenum", tags: ["transition-metal", "period-5", "group-6"] },
1109
+ { id: "elem-Tc", name: "\u951D", latex: "\\ce{Tc}", category: "element", description: "Technetium", tags: ["transition-metal", "period-5", "group-7"] },
1110
+ { id: "elem-Ru", name: "\u948C", latex: "\\ce{Ru}", category: "element", description: "Ruthenium", tags: ["transition-metal", "period-5", "group-8"] },
1111
+ { id: "elem-Rh", name: "\u94D1", latex: "\\ce{Rh}", category: "element", description: "Rhodium", tags: ["transition-metal", "period-5", "group-9"] },
1112
+ { id: "elem-Pd", name: "\u94AF", latex: "\\ce{Pd}", category: "element", description: "Palladium", tags: ["transition-metal", "period-5", "group-10"] },
1113
+ { id: "elem-Ag", name: "\u94F6", latex: "\\ce{Ag}", category: "element", description: "Silver", tags: ["transition-metal", "period-5", "group-11"] },
1114
+ { id: "elem-Cd", name: "\u9549", latex: "\\ce{Cd}", category: "element", description: "Cadmium", tags: ["transition-metal", "period-5", "group-12"] },
1115
+ { id: "elem-In", name: "\u94DF", latex: "\\ce{In}", category: "element", description: "Indium", tags: ["metal", "period-5", "group-13"] },
1116
+ { id: "elem-Sn", name: "\u9521", latex: "\\ce{Sn}", category: "element", description: "Tin", tags: ["metal", "period-5", "group-14"] },
1117
+ { id: "elem-Sb", name: "\u9511", latex: "\\ce{Sb}", category: "element", description: "Antimony", tags: ["metalloid", "period-5", "group-15"] },
1118
+ { id: "elem-Te", name: "\u78B2", latex: "\\ce{Te}", category: "element", description: "Tellurium", tags: ["metalloid", "period-5", "group-16"] },
1119
+ { id: "elem-I", name: "\u7898", latex: "\\ce{I}", category: "element", description: "Iodine", tags: ["halogen", "period-5", "group-17"] },
1120
+ { id: "elem-Xe", name: "\u6C19", latex: "\\ce{Xe}", category: "element", description: "Xenon", tags: ["noble-gas", "period-5", "group-18"] },
1121
+ // ---- 第6周期 ----
1122
+ { id: "elem-Cs", name: "\u94EF", latex: "\\ce{Cs}", category: "element", description: "Cesium", tags: ["alkali-metal", "period-6", "group-1"] },
1123
+ { id: "elem-Ba", name: "\u94A1", latex: "\\ce{Ba}", category: "element", description: "Barium", tags: ["alkaline-earth", "period-6", "group-2"] },
1124
+ // La-Lu: 镧系 (Lanthanides)
1125
+ { id: "elem-La", name: "\u9567", latex: "\\ce{La}", category: "element", description: "Lanthanum", tags: ["lanthanide", "period-6", "f-block"] },
1126
+ { id: "elem-Ce", name: "\u94C8", latex: "\\ce{Ce}", category: "element", description: "Cerium", tags: ["lanthanide", "period-6", "f-block"] },
1127
+ { id: "elem-Pr", name: "\u9568", latex: "\\ce{Pr}", category: "element", description: "Praseodymium", tags: ["lanthanide", "period-6", "f-block"] },
1128
+ { id: "elem-Nd", name: "\u9495", latex: "\\ce{Nd}", category: "element", description: "Neodymium", tags: ["lanthanide", "period-6", "f-block"] },
1129
+ { id: "elem-Pm", name: "\u94B7", latex: "\\ce{Pm}", category: "element", description: "Promethium", tags: ["lanthanide", "period-6", "f-block"] },
1130
+ { id: "elem-Sm", name: "\u9490", latex: "\\ce{Sm}", category: "element", description: "Samarium", tags: ["lanthanide", "period-6", "f-block"] },
1131
+ { id: "elem-Eu", name: "\u94D5", latex: "\\ce{Eu}", category: "element", description: "Europium", tags: ["lanthanide", "period-6", "f-block"] },
1132
+ { id: "elem-Gd", name: "\u9486", latex: "\\ce{Gd}", category: "element", description: "Gadolinium", tags: ["lanthanide", "period-6", "f-block"] },
1133
+ { id: "elem-Tb", name: "\u94FD", latex: "\\ce{Tb}", category: "element", description: "Terbium", tags: ["lanthanide", "period-6", "f-block"] },
1134
+ { id: "elem-Dy", name: "\u955D", latex: "\\ce{Dy}", category: "element", description: "Dysprosium", tags: ["lanthanide", "period-6", "f-block"] },
1135
+ { id: "elem-Ho", name: "\u94AC", latex: "\\ce{Ho}", category: "element", description: "Holmium", tags: ["lanthanide", "period-6", "f-block"] },
1136
+ { id: "elem-Er", name: "\u94D2", latex: "\\ce{Er}", category: "element", description: "Erbium", tags: ["lanthanide", "period-6", "f-block"] },
1137
+ { id: "elem-Tm", name: "\u94E5", latex: "\\ce{Tm}", category: "element", description: "Thulium", tags: ["lanthanide", "period-6", "f-block"] },
1138
+ { id: "elem-Yb", name: "\u9571", latex: "\\ce{Yb}", category: "element", description: "Ytterbium", tags: ["lanthanide", "period-6", "f-block"] },
1139
+ { id: "elem-Lu", name: "\u9565", latex: "\\ce{Lu}", category: "element", description: "Lutetium", tags: ["lanthanide", "period-6", "f-block"] },
1140
+ // 5d 过渡金属
1141
+ { id: "elem-Hf", name: "\u94EA", latex: "\\ce{Hf}", category: "element", description: "Hafnium", tags: ["transition-metal", "period-6", "group-4"] },
1142
+ { id: "elem-Ta", name: "\u94BD", latex: "\\ce{Ta}", category: "element", description: "Tantalum", tags: ["transition-metal", "period-6", "group-5"] },
1143
+ { id: "elem-W", name: "\u94A8", latex: "\\ce{W}", category: "element", description: "Tungsten", tags: ["transition-metal", "period-6", "group-6"] },
1144
+ { id: "elem-Re", name: "\u94FC", latex: "\\ce{Re}", category: "element", description: "Rhenium", tags: ["transition-metal", "period-6", "group-7"] },
1145
+ { id: "elem-Os", name: "\u9507", latex: "\\ce{Os}", category: "element", description: "Osmium", tags: ["transition-metal", "period-6", "group-8"] },
1146
+ { id: "elem-Ir", name: "\u94F1", latex: "\\ce{Ir}", category: "element", description: "Iridium", tags: ["transition-metal", "period-6", "group-9"] },
1147
+ { id: "elem-Pt", name: "\u94C2", latex: "\\ce{Pt}", category: "element", description: "Platinum", tags: ["transition-metal", "period-6", "group-10"] },
1148
+ { id: "elem-Au", name: "\u91D1", latex: "\\ce{Au}", category: "element", description: "Gold", tags: ["transition-metal", "period-6", "group-11"] },
1149
+ { id: "elem-Hg", name: "\u6C5E", latex: "\\ce{Hg}", category: "element", description: "Mercury", tags: ["transition-metal", "period-6", "group-12", "liquid"] },
1150
+ { id: "elem-Tl", name: "\u94CA", latex: "\\ce{Tl}", category: "element", description: "Thallium", tags: ["metal", "period-6", "group-13"] },
1151
+ { id: "elem-Pb", name: "\u94C5", latex: "\\ce{Pb}", category: "element", description: "Lead", tags: ["metal", "period-6", "group-14"] },
1152
+ { id: "elem-Bi", name: "\u94CB", latex: "\\ce{Bi}", category: "element", description: "Bismuth", tags: ["metal", "period-6", "group-15"] },
1153
+ { id: "elem-Po", name: "\u948B", latex: "\\ce{Po}", category: "element", description: "Polonium", tags: ["metalloid", "period-6", "group-16"] },
1154
+ { id: "elem-At", name: "\u7839", latex: "\\ce{At}", category: "element", description: "Astatine", tags: ["halogen", "period-6", "group-17"] },
1155
+ { id: "elem-Rn", name: "\u6C21", latex: "\\ce{Rn}", category: "element", description: "Radon", tags: ["noble-gas", "period-6", "group-18"] },
1156
+ // ---- 第7周期 ----
1157
+ { id: "elem-Fr", name: "\u94AB", latex: "\\ce{Fr}", category: "element", description: "Francium", tags: ["alkali-metal", "period-7", "group-1"] },
1158
+ { id: "elem-Ra", name: "\u956D", latex: "\\ce{Ra}", category: "element", description: "Radium", tags: ["alkaline-earth", "period-7", "group-2"] },
1159
+ // Ac-Lr: 锕系 (Actinides)
1160
+ { id: "elem-Ac", name: "\u9515", latex: "\\ce{Ac}", category: "element", description: "Actinium", tags: ["actinide", "period-7", "f-block"] },
1161
+ { id: "elem-Th", name: "\u948D", latex: "\\ce{Th}", category: "element", description: "Thorium", tags: ["actinide", "period-7", "f-block"] },
1162
+ { id: "elem-Pa", name: "\u9564", latex: "\\ce{Pa}", category: "element", description: "Protactinium", tags: ["actinide", "period-7", "f-block"] },
1163
+ { id: "elem-U", name: "\u94C0", latex: "\\ce{U}", category: "element", description: "Uranium", tags: ["actinide", "period-7", "f-block"] },
1164
+ { id: "elem-Np", name: "\u954E", latex: "\\ce{Np}", category: "element", description: "Neptunium", tags: ["actinide", "period-7", "f-block"] },
1165
+ { id: "elem-Pu", name: "\u949A", latex: "\\ce{Pu}", category: "element", description: "Plutonium", tags: ["actinide", "period-7", "f-block"] },
1166
+ { id: "elem-Am", name: "\u9545", latex: "\\ce{Am}", category: "element", description: "Americium", tags: ["actinide", "period-7", "f-block"] },
1167
+ { id: "elem-Cm", name: "\u9514", latex: "\\ce{Cm}", category: "element", description: "Curium", tags: ["actinide", "period-7", "f-block"] },
1168
+ { id: "elem-Bk", name: "\u952B", latex: "\\ce{Bk}", category: "element", description: "Berkelium", tags: ["actinide", "period-7", "f-block"] },
1169
+ { id: "elem-Cf", name: "\u950E", latex: "\\ce{Cf}", category: "element", description: "Californium", tags: ["actinide", "period-7", "f-block"] },
1170
+ { id: "elem-Es", name: "\u953F", latex: "\\ce{Es}", category: "element", description: "Einsteinium", tags: ["actinide", "period-7", "f-block"] },
1171
+ { id: "elem-Fm", name: "\u9544", latex: "\\ce{Fm}", category: "element", description: "Fermium", tags: ["actinide", "period-7", "f-block"] },
1172
+ { id: "elem-Md", name: "\u9494", latex: "\\ce{Md}", category: "element", description: "Mendelevium", tags: ["actinide", "period-7", "f-block"] },
1173
+ { id: "elem-No", name: "\u9518", latex: "\\ce{No}", category: "element", description: "Nobelium", tags: ["actinide", "period-7", "f-block"] },
1174
+ { id: "elem-Lr", name: "\u94F9", latex: "\\ce{Lr}", category: "element", description: "Lawrencium", tags: ["actinide", "period-7", "f-block"] },
1175
+ // 6d 超重元素
1176
+ { id: "elem-Rf", name: "\u{2CB3B}", latex: "\\ce{Rf}", category: "element", description: "Rutherfordium", tags: ["transition-metal", "period-7", "group-4", "synthetic"] },
1177
+ { id: "elem-Db", name: "\u{2CB4A}", latex: "\\ce{Db}", category: "element", description: "Dubnium", tags: ["transition-metal", "period-7", "group-5", "synthetic"] },
1178
+ { id: "elem-Sg", name: "\u{2CB73}", latex: "\\ce{Sg}", category: "element", description: "Seaborgium", tags: ["transition-metal", "period-7", "group-6", "synthetic"] },
1179
+ { id: "elem-Bh", name: "\u{2CB5B}", latex: "\\ce{Bh}", category: "element", description: "Bohrium", tags: ["transition-metal", "period-7", "group-7", "synthetic"] },
1180
+ { id: "elem-Hs", name: "\u{2CB76}", latex: "\\ce{Hs}", category: "element", description: "Hassium", tags: ["transition-metal", "period-7", "group-8", "synthetic"] },
1181
+ { id: "elem-Mt", name: "\u9FCF", latex: "\\ce{Mt}", category: "element", description: "Meitnerium", tags: ["transition-metal", "period-7", "group-9", "synthetic"] },
1182
+ { id: "elem-Ds", name: "\u{2B7FC}", latex: "\\ce{Ds}", category: "element", description: "Darmstadtium", tags: ["transition-metal", "period-7", "group-10", "synthetic"] },
1183
+ { id: "elem-Rg", name: "\u{2CB2D}", latex: "\\ce{Rg}", category: "element", description: "Roentgenium", tags: ["transition-metal", "period-7", "group-11", "synthetic"] },
1184
+ { id: "elem-Cn", name: "\u93B6", latex: "\\ce{Cn}", category: "element", description: "Copernicium", tags: ["transition-metal", "period-7", "group-12", "synthetic"] },
1185
+ { id: "elem-Nh", name: "\u9268", latex: "\\ce{Nh}", category: "element", description: "Nihonium", tags: ["metal", "period-7", "group-13", "synthetic"] },
1186
+ { id: "elem-Fl", name: "\u{2B4E7}", latex: "\\ce{Fl}", category: "element", description: "Flerovium", tags: ["metal", "period-7", "group-14", "synthetic"] },
1187
+ { id: "elem-Mc", name: "\u9546", latex: "\\ce{Mc}", category: "element", description: "Moscovium", tags: ["metal", "period-7", "group-15", "synthetic"] },
1188
+ { id: "elem-Lv", name: "\u925D", latex: "\\ce{Lv}", category: "element", description: "Livermorium", tags: ["metal", "period-7", "group-16", "synthetic"] },
1189
+ { id: "elem-Ts", name: "\u77F3\u7530", latex: "\\ce{Ts}", category: "element", description: "Tennessine", tags: ["halogen", "period-7", "group-17", "synthetic"] },
1190
+ { id: "elem-Og", name: "\u6C14\u5967", latex: "\\ce{Og}", category: "element", description: "Oganesson", tags: ["noble-gas", "period-7", "group-18", "synthetic"] }
1191
+ ];
498
1192
  var ALL_CHEM_TEMPLATES = [
499
1193
  ...COMPOUND_TEMPLATES,
500
1194
  ...REACTION_TEMPLATES,
501
- ...ELECTROCHEM_TEMPLATES
1195
+ ...ELECTROCHEM_TEMPLATES,
1196
+ ...ION_TEMPLATES,
1197
+ ...ELEMENT_TEMPLATES
502
1198
  ];
503
1199
  function searchCompounds(query) {
504
1200
  const q = query.toLowerCase();
@@ -512,6 +1208,32 @@ function getAcids() {
512
1208
  function getBases() {
513
1209
  return COMPOUND_TEMPLATES.filter((t) => t.tags.includes("base"));
514
1210
  }
1211
+ function searchIons(query) {
1212
+ const q = query.toLowerCase();
1213
+ return ION_TEMPLATES.filter(
1214
+ (t) => t.name.toLowerCase().includes(q) || t.latex.toLowerCase().includes(q) || t.description.toLowerCase().includes(q) || t.tags.some((tag) => tag.toLowerCase().includes(q))
1215
+ );
1216
+ }
1217
+ function getCations() {
1218
+ return ION_TEMPLATES.filter((t) => t.tags.includes("cation"));
1219
+ }
1220
+ function getAnions() {
1221
+ return ION_TEMPLATES.filter((t) => t.tags.includes("anion"));
1222
+ }
1223
+ function searchElements(query) {
1224
+ const q = query.toLowerCase();
1225
+ return ELEMENT_TEMPLATES.filter(
1226
+ (t) => t.name.toLowerCase().includes(q) || t.description.toLowerCase().includes(q) || t.tags.some((tag) => tag.toLowerCase().includes(q))
1227
+ );
1228
+ }
1229
+ function getElementsByPeriod(period) {
1230
+ const tag = `period-${period}`;
1231
+ return ELEMENT_TEMPLATES.filter((t) => t.tags.includes(tag));
1232
+ }
1233
+ function getElementsByGroup(group) {
1234
+ const tag = `group-${group}`;
1235
+ return ELEMENT_TEMPLATES.filter((t) => t.tags.includes(tag));
1236
+ }
515
1237
 
516
1238
  // src/greek-presets.ts
517
1239
  var GREEK_LOWERCASE_GROUP = {
@@ -612,20 +1334,28 @@ function searchGreekWithVariants(query) {
612
1334
  CALCULUS_TEMPLATES,
613
1335
  COMPOUND_TEMPLATES,
614
1336
  ELECTROCHEM_TEMPLATES,
1337
+ ELEMENT_TEMPLATES,
615
1338
  GREEK_GROUPS,
616
1339
  GREEK_LOWERCASE_GROUP,
617
1340
  GREEK_UPPERCASE_GROUP,
1341
+ ION_TEMPLATES,
618
1342
  LINEAR_ALGEBRA_TEMPLATES,
619
1343
  PHYSICS_TEMPLATES,
620
1344
  REACTION_TEMPLATES,
621
1345
  STATS_TEMPLATES,
622
1346
  TRIG_TEMPLATES,
623
1347
  getAcids,
1348
+ getAnions,
624
1349
  getBases,
1350
+ getCations,
1351
+ getElementsByGroup,
1352
+ getElementsByPeriod,
625
1353
  getTemplateById,
626
1354
  getTemplatesByCategory,
627
1355
  searchCompounds,
1356
+ searchElements,
628
1357
  searchGreek,
629
1358
  searchGreekWithVariants,
1359
+ searchIons,
630
1360
  searchTemplates
631
1361
  });