16

我很好奇是否存在用于 TeX/LaTeX 的本机 .NET 渲染器。我能找到的最接近的匹配是 Java 实现JMathTeX。我很想将它移植到 C#,但在此之前,我只想检查是否有人知道那里的 .NET 实现。

我目前的想法是使用 MiKTeX 以及dvipng编译 TeX 源并将生成的 DVI 渲染为 PNG,但我仍然担心这可能会产生不可接受的开销,更不用说需要将 MiKTeX 与给定程序捆绑在一起.

4

4 回答 4

5

由verybadcat 提供的纯C# Latex 实现。

这是美妙的 iosMath LaTeX 引擎的 C# 端口。

它现在在大多数情况下都有效。下面是一些例子。具有讽刺意味的是,第一个前端是 iOS。但是,如果要添加前端,例如 Xamarin.Forms 或 Windows 环境,应该是可以的。您必须定义自己的 TypesettingContext 并编写 IGraphicsContext 的实现。TypesettingContext 又包含几个组件,包括选择字体。希望您不需要接触核心排版引擎。(如果你这样做,我会认为这是一个错误。)

CSharpMath 示例

于 2018-02-05T05:18:42.753 回答
5

这是非常迟到的,但我想我会发布一个链接到WPF-Math项目的恢复和扩展端口,我在这个原始问题之后不久就开始了,并且仍然有助于保持较小的容量。它最初是JMathTex的一个端口,但后来扩展到包含更多内容。目前,它正在获取 WPF 以外的渲染器。

于 2018-02-06T01:16:39.657 回答
2

如果我没记错的话,TeX 是用 Pascal 方言编写的,今天编译时,它通常首先编译成标准 C,然后用 C 编译器编译生成最终的二进制文件。将原始 Pascal 代码编译成 C# 并在 C# 中围绕它编写一个包装器以便能够将其用作库可能是可行的。

当然,这是一个相当大的项目,对于您手头的问题可能有点过分了。

于 2009-10-04T01:14:01.510 回答
-2

使用此代码!!!

        const string latex = @"\frac{2+2}{2}";
        const string fileName = @"formula.png";

        File.Open(fileName, FileMode.OpenOrCreate).Close();

        var parser = new WpfMath.TexFormulaParser();
        var formula = parser.Parse(latex);
        var renderer = formula.GetRenderer(WpfMath.TexStyle.Display, 20.0, "Arial");
        var bitmapSource = renderer.RenderToBitmap(0, 0);

        var encoder = new System.Windows.Media.Imaging.PngBitmapEncoder();
        encoder.Frames.Add(System.Windows.Media.Imaging.BitmapFrame.Create(bitmapSource));
        using (var target = new FileStream(fileName, FileMode.Create))
        {
            encoder.Save(target);
        }

        pictureBox2.Image = Image.FromFile(fileName);
于 2019-07-17T12:14:57.297 回答