renderer LaTeX per .NET?
Domanda
Sono curioso di vedere se un renderer .NET nativo per TeX / LaTeX esiste. La corrispondenza più vicina che ho potuto trovare è un'implementazione Java, JMathTeX . Sono tentato di porto questo in C #, ma prima di farlo, vorrei semplicemente per verificare se qualcuno è a conoscenza di un'implementazione .NET là fuori.
I miei pensieri attuali sono da utilizzare insieme a MiKTeX dvipng
per compilare il sorgente TeX e rendere il DVI generato come PNG, ma sto ancora preoccupanti questo potrebbero comportare una quantità inaccettabile di testa, per non parlare della necessità di riunire MiKTeX con il programma di data.
Soluzione
Se non mi sbaglio, TeX è scritto in un dialetto di Pascal, e quando compilato oggi è generalmente prima compilato in serie C, poi compilato con un compilatore C per produrre il binario finale. Potrebbe essere fattibile per compilare invece il codice Pascal originale in C # e forse scrivere un wrapper in C # per essere in grado di usarlo come una libreria.
Naturalmente questo è un piuttosto grande progetto per affrontare ed è probabilmente eccessivo per il vostro problema a portata di mano.
Altri suggerimenti
Un'implementazione puro C # di lattice da verybadcat.
Questo è un porto C # del meraviglioso motore iosMath LaTeX.
Si sta ora lavorando nella maggior parte dei casi. Alcuni esempi sono al di sotto. ironicamente abbastanza, il primo front-end è iOS. Tuttavia, se si desidera aggiungere un front-end, come ad esempio Xamarin.Forms o un ambiente Windows, dovrebbe Essere possibile. Si dovrà definire la propria TypesettingContext e scrivere un'implementazione di IGraphicsContext. Il TypesettingContext in sua volta ha diverse componenti, tra cui la scelta di un tipo di carattere. Si spera, non avrebbe bisogno di toccare il motore di composizione di nucleo. (Se lo fai, io prenderebbe in considerazione che un bug.)
Questo è molto in ritardo, ma ho pensato di postare un link a una porta rivivere e ampliata della WPF-Math progetto , che ho iniziato a non molto tempo dopo questa domanda iniziale, e ancora aiutare a mantenere in una capacità minore. In origine era un porto di JMathTex , ma da allora ha ampliato per includere molto di più. Al momento, è in procinto di ottenere rendering diverse da WPF.
utilizzare questo codice !!!
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);