10 个版本 (6 个重大更新)

0.8.0 2023 年 12 月 26 日
0.7.0 2023 年 12 月 22 日
0.6.1 2023 年 12 月 14 日
0.5.1 2023 年 12 月 12 日
0.2.0 2023 年 11 月 25 日

#65国际化 (i18n)

每月下载量 30
mathemascii 中使用

Apache-2.0 协议

165KB
4K SLoC

Build CI Documentation Crates

alemat - MathML 构建器

什么是 "alemat"?

Al-Alemat 是阿拉伯语中 "标签" 的意思。MathML 是一种使用标签(类似于其他标记语言如 XML 或 HTML)来构建数学符号的标记语言。

alemat 是做什么用的?

alemat 是一个用于构建 MathMl 文档的 Rust 包。目标是提供类型安全和易用的 API 来构建和渲染 MathMl 元素。

示例

通常,您可以查看 tests/ 目录中的 API 示例和 tests/snapshots/ 目录中的渲染输出。

以下是一些示例

let output = MathMl::with_content(
    Radical::builder()
        .index("2")
        .content(alemat::children![
            Num::from(1),
            Operator::from("+"),
            SubSup::builder()
                .base(Ident::from("n"))
                .subscript(Num::from(2))
                .supscript(Num::from(3))
                .build(),
        ])
        .build(),
)
.render();

渲染结果如下

<math>
  <msqrt>
    <mn>
      1
    </mn>
    <mo>
      +
    </mo>
    <msubsup>
      <mi>
        n
      </mi>
      <mn>
        2
      </mn>
      <mn>
        3
      </mn>
    </msubsup>
  </msqrt>
</math>

看起来像这样

$\sqrt[2]{1 + n_{2}^{3}}$

该包公开了一些宏,以便在构建元素时提高易用性。例如,children! 宏可以将任意元素组合成一个单独的数组。内部,这是通过将每个元素转换为 Element 枚举并存储在该列表中实现的。

还有用于构建 mrow 元素的 row! 宏。还有用于创建 table_row!table! 的宏。例如

let out = MathMl::with_content(alemat::children![
    Frac::builder()
        .num(Ident::from("A"))
        .denom(Num::from(2))
        .build(),
    Operator::eq(),
    alemat::row![
        Operator::lparens(),
        alemat::table![
            [Num::from(1), Num::from(2), Num::from(3)],
            [Num::from(4), Num::from(5), Num::from(6)],
            [Num::from(7), Num::from(8), Num::from(9)],
        ],
        Operator::rparens(),
    ]
])
.render();

这生成了矩阵的 MathML

<math>
  <mfrac>
    <mi>
      A
    </mi>
    <mn>
      2
    </mn>
  </mfrac>
  <mo>
    =
  </mo>
  <mrow>
    <mo>
      (
    </mo>
    <mtable>
      <mtr>
        <mtd>
          <mn>
            1
          </mn>
        </mtd>
        <mtd>
          <mn>
            2
          </mn>
        </mtd>
        <mtd>
          <mn>
            3
          </mn>
        </mtd>
      </mtr>
      <mtr>
        <mtd>
          <mn>
            4
          </mn>
        </mtd>
        <mtd>
          <mn>
            5
          </mn>
        </mtd>
        <mtd>
          <mn>
            6
          </mn>
        </mtd>
      </mtr>
      <mtr>
        <mtd>
          <mn>
            7
          </mn>
        </mtd>
        <mtd>
          <mn>
            8
          </mn>
        </mtd>
        <mtd>
          <mn>
            9
          </mn>
        </mtd>
      </mtr>
    </mtable>
    <mo>
      )
    </mo>
  </mrow>
</math>

看起来像这样

$A = \begin{pmatrix} 1 & 2 & 3\\ 4 & 5 & 6\\ 7 & 8 & 9\\ \end{pmatrix}$

许可证

本项目采用Apache 2.0许可证。有关详细信息,请参阅LICENSE文件。

无运行时依赖