我很好奇是否存在TeX / LaTeX的原生.NET渲染器。我能找到的最接近的匹配是Java实现,JMathTeX。我很想把它移植到C#,但在我这样做之前,我只想检查是否有人知道那里的.NET实现。
我目前的想法是使用MiKTeX和dvipng
来编译TeX源并将生成的DVI渲染为PNG,但我仍然担心这会产生不可接受的开销,更不用说需要将MiKTeX与给定程序捆绑在一起。
答案 0 :(得分:2)
如果我没弄错的话,TeX是用Pascal的方言编写的,今天编译时通常首先编译成标准C,然后用C编译器编译产生最终的二进制文件。将原始的Pascal代码编译成C#并在C#中编写一个包装器以便能够将其用作库是可行的。
当然这是一个相当大的项目,对你手头的问题来说可能有些过分。
答案 1 :(得分:2)
A pure C# implementation of Latex by verybadcat.
这是精彩的iosMath LaTeX引擎的C#端口。
现在大多数情况下都在工作。下面是一些例子。讽刺地 足够,第一个前端是iOS。但是,如果要添加 前端,如Xamarin.Forms或Windows环境,它应该 有可能。您必须定义自己的TypesettingContext和 编写IGraphicsContext的实现。 TypesettingContext in turn有几个组件,包括选择字体。希望你 不需要触摸核心排版引擎。 (如果你这样做,我 会考虑一个错误。)
答案 2 :(得分:2)
这是非常过期的,但我想我会发布一个链接到WPF-Math项目的复活和扩展端口,我在这个原始问题之后开始的时间不长,并且仍然有助于保持未成年人容量。它最初是 JMathTex 的一个端口,但后来扩展到包含更多内容。目前,它正在获得除WPF以外的渲染器。
答案 3 :(得分:0)
使用此代码!!!
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);