LaTeX Renderer für .NET?
Frage
Ich bin neugierig, ob eine native .NET-Renderer für TeX / LaTeX existiert. Die nächste Übereinstimmung ich in der Lage gewesen ist, eine Java-Implementierung zu finden, JMathTeX . Ich bin dieser auf C # zu portieren versucht, aber bevor ich das tue, möchte ich einfach zu überprüfen, ob jemand Kenntnis von einer .NET-Implementierung ist da draußen.
Meine aktuellen Gedanken sind MiKTeX verwenden zusammen mit dvipng
die TeX Quelle zu kompilieren und die erzeugte DVI als PNG machen, aber ich bin beunruhigend noch dies eine inakzeptable Menge an Overhead entstehen können, nicht die Notwendigkeit zu erwähnen MiKTeX zu bündeln mit dem angegebenen Programm.
Lösung
Wenn ich mich nicht irre, ist TeX in einem Dialekt von Pascal geschrieben, und wenn heute kompiliert es in der Regel zunächst in Standard C kompiliert, dann mit einem C-Compiler kompiliert die endgültige binäre zu erzeugen. Es könnte möglich sein, anstelle den ursprünglichen Pascal-Code in C # zu kompilieren und vielleicht einen Wrapper um es in C # schreiben zu können, um es als eine Bibliothek verwenden.
Das ist natürlich ein ziemlich großes Projekt zu nehmen und ist wahrscheinlich übertrieben für Ihr Problem auf der Hand.
Andere Tipps
eine reine C # -Implementierung von Latex durch verybadcat.
Dies ist ein C # Port des wunderbaren iosMath LaTeX-Motor.
Es arbeitet jetzt in den meisten Fällen. Einige Beispiele sind unten. Ironisch genug, das erste vordere Ende ist IOS. Wenn Sie jedoch wollen ein hinzufügen Front-End, wie Xamarin.Forms oder eine Windows-Umgebung, es sollte möglich sein. Sie müssten Ihre eigene TypesettingContext definieren und eine Implementierung von IGraphicsContext schreiben. Die TypesettingContext in wiederum hat mehrere Komponenten, eine Schriftart, einschließlich der Wahl. Hoffentlich du würde nicht braucht den Kernsatz Motor zu berühren. (Wenn Sie das tun, ich in Betracht ziehen würde, dass ein Fehler.)
Das ist sehr überfällig, aber ich dachte, dass ich einen Link zu einem neu belebt und erweiterte Port des WPF-Math Projekt, das ich nicht allzu lange nach dieser ursprünglichen Frage gestartet, und nach wie vor in einer geringen Kapazität aufrechtzuerhalten helfen. Es war ursprünglich ein Hafen von JMathTex , sondern hat sich erweitert, da viel mehr aufzunehmen. Im Moment ist es in dem Prozess der Renderer andere als WPF zu gewinnen.
Sie diesen Code verwenden !!!
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);