Files
margin-docs/src-tauri/vendor/mitex/mitex.typ
T
2026-08-28 21:47:48 +05:30

46 lines
1016 B
Typst

#import "specs/mod.typ": mitex-scope
#let mitex-wasm = plugin("./mitex.wasm")
#let get-elem-text(it) = {
{
if type(it) == str {
it
} else if type(it) == content and it.has("text") {
it.text
} else {
panic("Unsupported type: " + str(type(it)))
}
}
}
#let mitex-convert(it, mode: "math", spec: bytes(())) = {
if mode == "math" {
str(mitex-wasm.convert_math(bytes(get-elem-text(it)), spec))
} else {
str(mitex-wasm.convert_text(bytes(get-elem-text(it)), spec))
}
}
// Math Mode
#let mimath(it, block: true, ..args) = {
let res = mitex-convert(mode: "math", it)
let eval-res = eval("$" + res + "$", scope: mitex-scope)
math.equation(block: block, eval-res, ..args)
}
// Text Mode
#let mitext(it) = {
let res = mitex-convert(mode: "text", it)
eval(res, mode: "markup", scope: mitex-scope)
}
#let mitex(it, mode: "math", ..args) = {
if mode == "math" {
mimath(it, ..args)
} else {
mitext(it, ..args)
}
}
#let mi = mimath.with(block: false)