gpt4 book ai didi

rust - 使用 Rust 在 GTK GUI 上渲染小的 LaTeX 片段

转载 作者:行者123 更新时间:2023-12-03 11:47:48 27 4
gpt4 key购买 nike

问题
我正在使用给定的 rust-gtk-binding 开发一个具有 GTK3 GUI 的 Rust 程序。
该程序应该是跨平台的(至少是 Linux 和 Windows)。
GUI 应该能够显示自定义纯文本和小的 LaTeX 片段以允许使用数学环境(小意味着一个公式的大小作为要显示的元素)。
因此,我需要一种将 LaTeX 代码转换为 GUI 可以显示的东西的方法。
想法及其问题
我可以看到两种显示 LaTeX 的方法:

  • 将 LaTeX 源代码编译为 pdf,然后编译为某种图像类型。应该可以使用 Ghostscript 来获取图像。但我不知道如何以轻量级(不包括像 miktex 之类的相当大的包)和跨平台的方式生成 pdf。这个选项也可能是多余的,因为不需要动态下载特殊的包,一个好的数学支持就足够了。积极的一面是在 GTK 中渲染图像应该很容易。
  • 使用足以满足数学环境的 KaTeX。我能够安装匹配的 crate 并从一些公式生成 HTML 源代码。但是在这里渲染结果变得很困难,因为 GTK 没有显示 HTML 的本地方式。由于很难将 HTML 引擎集成到 GUI 中,因此最好找到一个能够将 HTML 呈现为然后可以显示的图像类型的工具。

  • 现在我有两种方法都使用中间步骤,对于普通 LaTeX,第一步很困难,对于 KaTeX,第二步显示问题。对于这两种方法的困难步骤,我找不到任何可行的解决方案。
    有没有我找不到的库或类似的库,或者有什么不同的方法?
    能够呈现单个公式就足够了,我只是想避免像使用完整的 LaTeX 编译器或半个浏览器来呈现 HTML 这样的大规模和困难的过度杀伤力。

    最佳答案

    在搜索和评估了更多方法之后,我得到了一个很好的解决方案,但也有一些主要缺点:
    首先,我用TinyTex作为 LaTeX 环境。我没有将 LaTeX 的使用限制为例如数学环境。 TinyTex 提供对主要平台的支持,同时轻巧便携。必须手动安装额外的 LaTeX 包,这使我可以决定哪些是随我的应用程序一起提供的。
    不利的一面是,虽然 TinyTex 对于 LaTeX 环境来说是轻量级的,但它在这里的用途仍然相当大(大约 250MB)。
    我安装了使用所需的软件包 \documentclass[preview]{standalone}得到一个已经裁剪的pdf。
    之后我使用 Ghostscript 为生成的 pdf 获取 png 图像。我没有使用语言绑定(bind),而是直接使用 std::process::Command .
    以下几行足以转换 test.tex进入 test.png带有可移植 TinyTex 安装和 Ghostscripts gswin64c.exe存在于 Windows 下项目目录的子文件夹中:(由于 TinyTex 和 Ghostscript 也存在于其他操作系统中,因此可以轻松更改给定示例以在其他系统上工作)

    use std::process::Command;

    fn main() {
    let output = Command::new("TinyTex\\bin\\win32\\pdflatex.exe")
    .args(&["test.tex"])
    .output()
    .expect("Some error message 1");

    println!("{}", String::from_utf8(output.stdout).unwrap());

    let output = Command::new("gs\\gswin64c.exe")
    .args(&[
    "-dNOPAUSE",
    "-dBATCH",
    "-sDEVICE=png16m",
    "-r1000",
    "-sOutputFile=test.png",
    "test.pdf",
    ])
    .output()
    .expect("Some error message 2");

    println!("{}", String::from_utf8(output.stdout).unwrap());
    }
    当然,在这个阶段这不是特别好的和有用的代码,但它显示了如何处理给定的问题,我想把它留在这里,以防有类似问题的人找到这篇文章。

    关于rust - 使用 Rust 在 GTK GUI 上渲染小的 LaTeX 片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64072644/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com