14 releases
new 0.3.10 | Feb 11, 2025 |
---|---|
0.3.7 | Feb 10, 2025 |
0.2.2 | Feb 2, 2025 |
0.2.0 | Jan 31, 2025 |
0.1.1 | Jan 29, 2025 |
#168 in Math
1,347 downloads per month
130KB
2.5K
SLoC
tex2typst-rs
A Rust library that converts TeX code to Typst code.
Aim of this project
There exist some other libraries that convert LaTeX (especially LaTeX math) to other languages. However, the result may not be visually pleasing or easy to read. This project aims to convert LaTeX to idiomatic Typst code, which can be very easily read and edited.
For comparison, for this LaTeX input:
\overrightarrow{P M}=(3-x-y) \overrightarrow{P A}+x \overrightarrow{P B}+(y-2) \overrightarrow{P C}
mitex
gives the output:
arrow(P M )= \(3 - x - y \) arrow(P A )+ x arrow(P B )+ \(y - 2 \) arrow(P C )
tex2typst-rs
gives the output:
arrow(P M) =(3 - x - y) arrow(P A) + x arrow(P B) +(y - 2) arrow(P C)
Usage
See the documentation for more details.
use tex2typst_rs::tex2typst;
use tex2typst_rs::text_and_tex2typst;
fn main() {
let tex = r"\widehat{f}(\xi)=\int_{-\infty}^{\infty} f(x) e^{-i 2 \pi \xi x} d x, \quad \forall \xi \in \mathbb{R}";
println!("{}", tex2typst(tex).unwrap());
let mixed = r"some text and some formula: \(\frac{1}{2}\)";
println!("{}", text_and_tex2typst(mixed).unwrap());
}
Output:
hat(f)(xi) = int_(- infty)^infty f(x) e^(- i 2 pi xi x) d x, quad forall xi in RR
some text and some formula: $1/2$
Acknowledgements
Took inspiration from tex2typst.
Dependencies
~2.2–3MB
~54K SLoC