#latex #image #cache #flushing

LatexImgGen-lib

一个Rust包,用于生成带有版本号的LaTeX方程图像,以避免缓存刷新和时间戳属性。

3个版本

使用旧Rust 2015

0.1.2 2023年8月27日
0.1.1 2023年8月27日
0.1.0 2023年8月27日

#1352 in 文本处理

Apache-2.0

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