2009-10-01 12 views
13

Sono curioso di sapere se esiste un renderer nativo di .NET per TeX/LaTeX. La corrispondenza più simile che sono riuscito a trovare è un'implementazione Java, JMathTeX. Sono tentato di portarlo in C#, ma prima di farlo, vorrei semplicemente verificare se qualcuno è a conoscenza di un'implementazione .NET.Il renderer LaTeX per .NET?

I miei pensieri attuali sono di usare MiKTeX insieme a dvipng per compilare il sorgente TeX e rendere il DVI generato come un PNG, ma mi preoccupo ancora che questo possa comportare una quantità inaccettabile di spese generali, per non parlare della necessità di raggruppare MiKTeX con il programma specificato.

+1

Mi sorprendo a chiedermi perché lo farei. La versione di Knuth è piuttosto priva di bug (offre un premio in denaro per bug confermati, e non è stato rivendicato da un po 'di tempo). Non è probabile che una riscrittura sia così buona. – dmckee

+0

@dmckee: l'alternativa per il rendering nelle app .NET è quella di utilizzare un compilatore come MiKTeX e quindi dvipng per convertirlo in un PNG. Questo è un metodo piuttosto indiretto, e speravo in qualcosa di più semplice. – Noldorin

+1

Mi aspetterei che sia un'alternativa migliore per utilizzare il (eccellente) pdf [la] tex, in quanto il risultato sarebbe quindi un formato (relativamente) facilmente visualizzabile. –

risposta

2

Se non sbaglio, TeX è scritto in un dialetto di Pascal e, una volta compilato, generalmente viene prima compilato nello standard C, quindi compilato con un compilatore C per produrre l'ultimo binario. Potrebbe essere possibile compilare invece il codice Pascal originale in C# e magari scrivere attorno a esso un wrapper in C# per poterlo usare come libreria.

Ovviamente questo è un progetto piuttosto ampio da assumere ed è probabilmente eccessivo per il tuo problema.

+0

Suggerimento interessante.Potrebbe valere la pena compilarlo in C, e quindi il wrapping in una libreria C++/CLI gestita, sto pensando. – Noldorin

+0

Sembra che tu abbia ragione. TeX è scritto in WEB, una variante di Pascal, quindi compilato in C usando http://www.tug.org/web2c/. – Noldorin

2

A pure C# implementation of Latex by verybadcat.

Si tratta di un C# porta del meraviglioso motore iosMath LaTeX.

Ora funziona nella maggior parte dei casi. Alcuni esempi sono di seguito. Ironia della sorte, , il primo front end è iOS. Tuttavia, se si desidera aggiungere un front-end , come Xamarin.Forms o un ambiente Windows, è possibile che sia possibile. Dovresti definire il tuo TypeettingContext e scrivere un'implementazione di IGraphicsContext. Il TypeettingContext nel turno ha diversi componenti, inclusa la scelta di un font. Si spera che tu non abbia bisogno di toccare il motore di composizione del core, . (Se lo fai, io considero che un bug.)

CSharpMath example

2

Questo è molto in ritardo, ma ho pensato di postare un link a una porta rivivere e ampliato del progetto WPF-Math, che ho iniziato non molto tempo dopo questa domanda originale, e ancora contribuire a mantenere una capacità minore. Originariamente era una porta di JMathTex, ma da allora si è espansa per includere molto di più. Al momento, è in procinto di ottenere riproduttori diversi da WPF.

Problemi correlati