Вопрос

Мне любопытно, существует ли собственный рендерер .NET для TeX / LaTeX.Самое близкое совпадение, которое мне удалось найти, - это реализация Java, JMathTeX.У меня возникает соблазн перенести это на C #, но прежде чем я это сделаю, я просто хотел бы проверить, знает ли кто-нибудь о существующей реализации .NET.

В настоящее время я думаю использовать MiKTeX вместе с dvipng чтобы скомпилировать исходный текст TeX и отобразить сгенерированный DVI в формате PNG, но я все еще беспокоюсь, что это может повлечь за собой неприемлемое количество накладных расходов, не говоря уже о необходимости связывать MiKTeX с данной программой.

Это было полезно?

Решение

Если я не ошибаюсь, TeX написан на диалекте Паскаля, и при сегодняшней компиляции он обычно сначала компилируется в стандартный C, а затем компилируется с помощью компилятора C для получения окончательного двоичного файла.Вместо этого было бы целесообразно скомпилировать исходный код Pascal в C# и, возможно, написать оболочку вокруг него на C#, чтобы иметь возможность использовать его в качестве библиотеки.

Конечно, это довольно большой проект, и, вероятно, он будет излишним для вашей проблемы.

Другие советы

Чистая реализация Latex на C # от verybadcat.

Это порт на C # замечательного движка iosMath LaTeX.

Сейчас это работает в большинстве случаев.Ниже приведены некоторые примеры.По иронии судьбы первый интерфейс - это iOS.Однако, если вы хотите добавить интерфейс, такой как Xamarin.Forms или среду Windows, это должно быть возможно.Вам пришлось бы определить свой собственный TypesettingContext и написать реализацию IGraphicsContext.В TypesettingContext в свою очередь, состоит из нескольких компонентов, включая выбор шрифта.Надеюсь, вам не нужно будет прикасаться к основному механизму набора текста.(Если вы это сделаете, я считаю, что баг.)

CSharpMath example

Это очень запоздало, но я решил опубликовать ссылку на возрожденный и расширенный порт WPF-Математика проект, который я начал вскоре после этого первоначального вопроса и до сих пор поддерживаю в незначительной степени.Первоначально это был порт JMathTex, но с тех пор расширился и включил в себя гораздо больше.На данный момент он находится в процессе получения средств визуализации, отличных от WPF.

используйте этот код!!!

        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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top