Pergunta

Estou curioso para saber se existe um renderizador nativo do .NET para Tex/látex. A partida mais próxima que pude encontrar é uma implementação de Java, JMATHTEX. Estou tentado a portar isso para C#, mas antes de fazê -lo, gostaria de verificar se alguém está ciente de uma implementação do .NET por aí.

Meus pensamentos atuais são usar Miktex junto com dvipng Para compilar a fonte TEX e renderizar o DVI gerado como um PNG, mas ainda estou preocupado, isso pode incorrer em uma quantidade inaceitável de sobrecarga, sem mencionar a necessidade de agrupar o Miktex com o programa fornecido.

Foi útil?

Solução

Se não me engano, o Tex é escrito em um dialeto de Pascal e, quando compilado hoje, geralmente é compilado no padrão C, depois compilado com um compilador C para produzir o binário final. Pode ser viável compilar o código Pascal original em C# e talvez escrever um invólucro em torno de C# para poder usá -lo como uma biblioteca.

É claro que este é um projeto bastante grande a ser assumido e provavelmente está exagerado pelo seu problema em questão.

Outras dicas

Uma implementação pura de LATEX C# Pure.

Esta é uma porta C# do maravilhoso mecanismo de látex iosmath.

Agora está funcionando na maioria dos casos. Alguns exemplos estão abaixo. Ironicamente, o primeiro front -end é o iOS. No entanto, se você deseja adicionar um front end, como xamarin.forms ou um ambiente do Windows, deve ser possível. Você teria que definir seu próprio TypeettingContext e escrever uma implementação do iGraphicsContext. O TypeettingContext, por sua vez, possui vários componentes, incluindo a escolha de uma fonte. Felizmente, você não precisaria tocar no principal mecanismo de digitação. (Se o fizer, eu consideraria isso um bug.)

CSharpMath example

Isso está muito atrasado, mas pensei em postar um link para uma porta revivida e expandida do WPF-math Projeto, que comecei pouco tempo depois dessa pergunta original, e ainda ajuda a manter em uma menor capacidade. Era originalmente um porto de JMATHTEX, mas desde então se expandiu para incluir muito mais. No momento, está no processo de obter renderizadores que não sejam o WPF.

Use este código !!!

        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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top