3个版本
使用旧Rust 2015
0.1.2 | 2023年8月27日 |
---|---|
0.1.1 | 2023年8月27日 |
0.1.0 | 2023年8月27日 |
#1352 in 文本处理
175KB
79 行
包含 (rust库, 61KB) target/debug/libLatexImgGen_lib.rlib,(rust库, 61KB) libLatexImgGen_lib-c72e9f6b10f4cc98.rlib,(Mach-o可执行文件, 5KB) LatexImgGen_lib-c72e9f6b10f4cc98.15hfz881vnx43im7.rcgu.o,(Mach-o可执行文件, 7KB) LatexImgGen_lib-c72e9f6b10f4cc98.3l59h0ge2o02s3km.rcgu.o,(Mach-o可执行文件, 8KB) LatexImgGen_lib-c72e9f6b10f4cc98.4tfdhrriatqqmjzq.rcgu.o,(Mach-o可执行文件, 12KB) LatexImgGen_lib-c72e9f6b10f4cc98.5g1foxwl05wm9na1.rcgu.o 以及其他10个文件。
LatexImgGen
一个Rust包,用于生成带有版本号的LaTeX方程图像,以避免需要缓存刷新,并比时间戳属性提供更多上下文。当将 _del_prev 参数设置为 false 时,可以保留之前的图像版本。当将 _del_prev 参数设置为 true 时,会删除之前的图像版本。
参数输入
render(full_img_name: String, eq_input: String, filepath: Option<&str>, _del_prev: bool)
full_img_name -> 图像名称。不能以 '_' 结尾,也不应包含 .svg
eq_input -> 一个LaTeX方程。可以在引号内或如此写入表达式:let expression = r#"y=\frac{1}{x}"#;
filepath -> 使用 ../dir/ 添加相对路径或使用 None 添加到当前目录
_del_prev -> 如果您希望从目录中删除上一个版本则为 true
示例
let mut name = "test".to_string();
let mut eq = "y=\\frac{1}{x}".to_string();
let path = "../imgfolder/";
name = LatexImgGen::render(name, eq, Some(path), true);
将在 imgfolder 目录中生成一个名为 test_0.svg 的图像
eq = "y=\\frac{1}{1000}".to_string();
name = LatexImgGen::render(name,eq,Some(path),true);
将在 imgfolder 目录中生成一个名为 test_1.svg 的图像
Dioxus 示例
在这个示例中,提供了一个用户提交LaTeX方程的输入区域。提交第一个方程后,将创建 eq_img_0.svg 图像。每次未来的提交都会用递增的版本重新生成图像。
#![allow(non_snake_case)]
use dioxus::prelude::*;
use LatexImgGen_lib::LatexImgGen;
fn main() {
dioxus_desktop::launch(App);
}
fn App(cx: Scope) -> Element {
let img_name = use_state(cx, || "eq_img".to_string());
let eq_input = use_state(cx, || "y=\\frac{1}{x}".to_string());
let mut img_bool = use_state(cx, || 0);
cx.render(rsx!{
form {
onsubmit: move |_| {
img_name.set(LatexImgGen::render(img_name.to_string(),eq_input.to_string(),None,true));
img_bool.set(1);
},
input {
value: "{eq_input}",
oninput: |event| eq_input.set(event.value.clone()),
}
input {
r#type: "submit",
}
},
ImgDisplay {
imgbool: **img_bool,
imgname: (**img_name).to_string(),
}
})
}
fn ImgDisplay(cx: Scope<ImgBool>) -> Element {
if cx.props.imgbool == 1 {
cx.render(rsx! {
img {
src: "{cx.props.imgname}"
}
})
} else {
None
}
}
#[derive(PartialEq, Props)]
struct ImgBool {
imgbool: i32,
imgname: String,
}
依赖项
~13MB
~161K SLoC