2009-10-01 11 views
13

Jestem ciekawy, czy istnieje macierzysty renderer .NET dla TeX/LaTeX. Najbliższym dopasowaniem, jakie udało mi się znaleźć, jest implementacja Java, JMathTeX. Mam ochotę przenieść to na C#, ale zanim to zrobię, chciałbym po prostu sprawdzić, czy ktoś jest świadomy implementacji .NET.Renderowanie LaTeX dla .NET?

Moje obecne rozważania mają na celu wykorzystanie MiKTeX wraz z dvipng do kompilowania źródła TeX i renderowania wygenerowanego DVI jako PNG, ale wciąż martwię się, że może to spowodować niedopuszczalną ilość kosztów, nie wspominając już o potrzebie pakowania MiKTeX z podanym programem.

+1

Zastanawiam się, dlaczego to zrobiłeś. Wersja Knutha jest prawie bezbłędna (oferuje nagrodę pieniężną za potwierdzone błędy i nie została odebrana od dłuższego czasu). Ponowne zapisanie prawdopodobnie nie będzie tak dobre. – dmckee

+0

@dmckee: Alternatywą renderowania w aplikacjach .NET jest użycie kompilatora takiego jak MiKTeX, a następnie dvipng do konwersji na plik PNG. Jest to metoda raczej pośrednia i liczyłem na coś prostszego. – Noldorin

+1

Spodziewałbym się, że będzie lepszą alternatywą do korzystania z (doskonałego) pliku pdf [la] tex, ponieważ wynik byłby wtedy (stosunkowo) łatwo wyświetlany. –

Odpowiedz

2

Jeśli się nie mylę, TeX jest napisany w dialekcie Pascala, a po skompilowaniu dzisiaj jest generalnie najpierw skompilowany do standardowego C, a następnie skompilowany z kompilatorem C, by wytworzyć końcowy plik binarny. Możliwe jest, aby zamiast tego skompilować oryginalny kod Pascala do języka C# i być może napisać go w języku C#, aby móc go używać jako biblioteki.

Oczywiście jest to dość duży projekt, który należy wziąć pod uwagę i prawdopodobnie jest zbyt duży, aby rozwiązać problem.

+0

Interesująca sugestia.Warto zastanowić się, czy warto skompilować C, a następnie owijać w zarządzaną bibliotekę C++/CLI. – Noldorin

+0

Wygląda na to, że masz rację. TeX jest napisany w WEB, wariancie Pascala, a następnie skompilowany do C za pomocą http://www.tug.org/web2c/. – Noldorin

2

A pure C# implementation of Latex by verybadcat.

Jest to port # C wspaniałego silnika iosMath lateksu.

Działa teraz w większości przypadków. Niektóre przykłady znajdują się poniżej. Jak na ironię, pierwszym front-endem jest iOS. Jeśli jednak chcesz dodać przednią końcówkę, taką jak Xamarin.Forms lub środowisko Windows, powinno być możliwe . Będziesz musiał zdefiniować własny kontekst składu zbioru i napisać implementację IGraphicsContext. Kontur składu tekstu w skręcie ma kilka komponentów, w tym wybór czcionki. Mam nadzieję, że użytkownik nie musi dotykać podstawowego silnika składu. (Jeśli tak, chciałbym rozważyć ten problem.)

CSharpMath example

2

To jest bardzo spóźniona, ale pomyślałem, że opublikować link do odnowionego i rozszerzonego portu projektu WPF-Math, które zacząłem niedługo po tym oryginalnym pytaniu i nadal pomagam utrzymać się w niewielkim stopniu. Pierwotnie był to port JMathTex, ale od tego czasu rozszerzył się o wiele więcej. W tej chwili trwa proces uzyskiwania renderers innych niż WPF.