1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//! どの書き方を受け付けるかを一覧にする
use suki::font;
use suki::{Mode, Shape, render_svg};
const SOURCES: &[&str] = &[
r"x^2",
r"\[ x^2 \]",
r"\( x^2 \)",
r"$x^2$",
r"$$x^2$$",
r"\begin{matrix} a & b \end{matrix}",
r"\begin{pmatrix} a & b \end{pmatrix}",
r"\begin{bmatrix} a & b \end{bmatrix}",
r"\begin{Bmatrix} a & b \end{Bmatrix}",
r"\begin{vmatrix} a & b \end{vmatrix}",
r"\begin{Vmatrix} a & b \end{Vmatrix}",
r"\begin{array}{cc} a & b \end{array}",
r"\begin{cases} a & b \end{cases}",
r"\begin{equation} x \end{equation}",
r"\begin{align} a &= b \end{align}",
r"\begin{aligned} a &= b \end{aligned}",
r"\begin{gather} a \\ b \end{gather}",
r"\begin{split} a \end{split}",
r"\begin{smallmatrix} a & b \end{smallmatrix}",
r"\begin{displaymath} x \end{displaymath}",
r"\begin{math} x \end{math}",
r"\begin{equation*} x \end{equation*}",
r"$x",
r"\$100",
r"x + \[ y \]",
];
fn main() {
let loaded = font::load(std::fs::read("font/latinmodern-math.otf").unwrap()).unwrap();
for source in SOURCES {
match suki::parse::parse_wrapped(source) {
Ok((_, wrapper)) => {
let _ = render_svg(source, &loaded, Mode::Display, Shape::Outline);
println!("通る {source} 囲み {wrapper:?}");
}
Err(reason) => println!("通らない {source}\n {reason}"),
}
}
}