Como renderizar uma fórmula no WPF ou WinForms

Eu preciso ter uma maneira de desenhar uma fórmula matemática no Windows Forms ou WPF. Alguns “FormulaTextBox” controle seria exatamente o que eu preciso.

Eu não estou perguntando sobre a implementação completa do LaTEX, mas pelo menos algo além das possibilidades do RichTextBox, com linhas de divisão, raízes quadradas, etc.

PS C # é tão poderoso. Uma maneira de desenhar fórmulas com c # (.net) deve estar conosco!

Soluções foram encontradas:

  1. Esta solução usa a biblioteca MathTex (MimeTex no passado) para gerar arquivos gif a partir do TeX como strings.
    Contras :

    • Não há versão do Windows da biblioteca mantida e testada . O artigo sugere vazamentos de memory e outros problemas que podem aparecer por causa disso. Um tem que ajustar e manter a versão do Windows por conta própria.

    • A abordagem geral possui um design não natural para winforms ou WPF. Embora possa caber na web, parece não ser tão ideal para winforms.

    • Há muito a ser feito a partir do exemplo do artigo para um controle de trabalho real (há sempre algo a ser feito, mas eu gostaria de ter uma solução mais pronta)

Aqui está uma lista de opções, extraídas de várias páginas da Web on-line, bem como algumas perguntas semelhantes sobre SO

  • WPF-Math , uma biblioteca WPF para renderizar marcação TeX relacionada à matemática.
  • gNumerator é um controle WinForms que processa MathML . É nativo C #, mas parece ser bem antigo.
  • Math Expressions , um controle WinForms comercial para exibir e editar equações matemáticas. Nota: não é livre
  • Há uma porta não oficial de JMathTex para um controle C # WPF
  • A versão para Windows do editor LaTex Lyx usa uma biblioteca nativa chamada MikTex que você poderia dar uma olhada. Eu vi mencionar em algum lugar que o pacote tex4ht processa equações matemáticas para imagens
  • MimeTex / MathTex , como você já mencionou
  • Você também pode usar um controle WebBrowser e include localmente uma das muitas bibliotecas javascript para renderizar o LaTex.
  • Você poderia penhorar o trabalho no Microsoft Word ( Exemplo – requer que os usuários tenham o MS Word instalado! )

Talvez você possa usar a API Wolfram Alpha para recuperar as imagens.

Se você quiser algo além de uma habilidade RichTextBox para renderizar torta, divisões e raízes sqr e etc, você poderia apenas usar WebBrowserControl (s) como checkbox de texto. Em seguida, para renderizar as fórmulas, você pode aproveitar as técnicas mostradas nesta página da Web, salvá-las em sua área de trabalho e abrir o arquivo html:

http://www.wjagray.co.uk/maths/ASCIIMathTutorial.html

Obviamente, você precisará de uma syntax especial (ou de botões especiais da calculadora) para inserir as fórmulas, e acredito que, ao examinar o arquivo customisations.js que direciona a página, você também pode criar sua própria lista de operadores e funções.

Aqui está o que eu faria se nenhuma das soluções específicas do .NET funcionasse para você:

É um pouco hacky, mas vai funcionar e seus usuários não saberão a diferença. Baixe a biblioteca do Mathjax . Quando seu usuário digita a equação, você pode converter a equação para LaTex ou MathML. Você pegaria o LaTex ou o MathML e geraria um arquivo HTML que referencia o Mathjax e mostraria o arquivo em sua pequena janela WebBrowser (válida para WinForms e WPF). Isso não deve exigir uma conexão com a internet.

Como eu disse, seus usuários não serão mais sábios.