2009-10-01 7 views
13

Ich bin gespannt, ob ein nativer .NET Renderer für TeX/LaTeX existiert. Die beste Übereinstimmung, die ich finden konnte, ist eine Java-Implementierung, JMathTeX. Ich bin versucht, dies in C# zu portieren, aber bevor ich das tue, möchte ich einfach überprüfen, ob jemand eine .NET-Implementierung da draußen kennt.LaTeX-Renderer für .NET?

Meine aktuellen Gedanken sind, MiKTeX zusammen mit dvipng zu verwenden, um die TeX-Quelle zu kompilieren und den generierten DVI als PNG zu rendern, aber ich mache mir immer noch Sorgen, dass dies einen unannehmbaren Aufwand verursachen kann, ganz zu schweigen von der Notwendigkeit zu bündeln MiKTeX mit dem gegebenen Programm.

+1

Ich frage mich, warum Sie das tun würden. Knuths Version ist ziemlich fehlerfrei (er bietet einen Geldpreis für bestätigte Bugs an und wurde lange nicht mehr beansprucht). Ein Umschreiben ist wahrscheinlich nicht so gut. – dmckee

+0

@dmckee: Die Alternative für das Rendern in .NET-Anwendungen ist die Verwendung eines Compilers wie MiKTeX und dann dvipng, um es in ein PNG umzuwandeln. Dies ist eine eher indirekte Methode, und ich hatte auf etwas Einfacheres gehofft. – Noldorin

+1

Ich würde erwarten, dass es eine bessere Alternative ist, das (ausgezeichnete) pdf [la] tex zu verwenden, da das Ergebnis dann schon ein (relativ) leicht darstellbares Format wäre. –

Antwort

2

Wenn ich mich nicht irre, wird TeX in einem Dialekt von Pascal geschrieben, und wenn es heute kompiliert wird, wird es im Allgemeinen zuerst in Standard C kompiliert und dann mit einem C-Compiler kompiliert, um die endgültige Binärdatei zu erzeugen. Es könnte möglich sein, stattdessen den ursprünglichen Pascal-Code in C# zu kompilieren und vielleicht einen Wrapper um ihn herum in C# zu schreiben, um ihn als eine Bibliothek verwenden zu können.

Natürlich ist dies ein ziemlich großes Projekt und wahrscheinlich ein Overkill für Ihr Problem.

+0

Interessanter Vorschlag.Es könnte sich lohnen, nach C zu kompilieren und dann in eine verwaltete C++/CLI-Bibliothek zu schreiben, denke ich. – Noldorin

+0

Scheint, du hast Recht. TeX wird in WEB, einer Variante von Pascal, geschrieben und dann unter http://www.tug.org/web2c/ in C kompiliert. – Noldorin

2

A pure C# implementation of Latex by verybadcat.

Dies ist ein C# Port der wunderbaren iosMath LaTeX-Engine.

Es funktioniert jetzt in den meisten Fällen. Einige Beispiele sind unten. Ironischerweise genug, das erste Frontend ist iOS. Wenn Sie jedoch ein Frontend wie Xamarin.Forms oder eine Windows-Umgebung hinzufügen möchten, sollte es möglich sein. Sie müssten Ihren eigenen TypesetContext definieren und eine Implementierung von IGraphicsContext schreiben. Der typesettingContext in wiederum hat mehrere Komponenten, einschließlich der Auswahl einer Schriftart. Hoffentlich müssen Sie nicht die Core-Setting-Engine berühren. (Wenn Sie das tun, ich würde der Ansicht, dass ein Fehler.)

CSharpMath example

2

Dies ist sehr überfällig, aber ich dachte, dass ich einen Link zu einer neu belebt und erweitert Port des WPF-Math Projekt veröffentlichen würde, was ich nicht allzu lange nach dieser originellen Frage begonnen habe, und trotzdem in geringerem Umfang dazu beitragen kann. Es war ursprünglich ein Port JMathTex, aber hat sich seitdem erweitert, um mehr zu enthalten. Im Moment ist es gerade dabei, andere Renderer als WPF zu gewinnen.