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 中使用
165KB
4K SLoC
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文件。