Come eseguire il rendering di una formula in WPF o WinForms

Devo avere un modo per disegnare una formula matematica in Windows Form o WPF. Alcuni controlli “FormulaTextBox” sarebbero esattamente ciò di cui ho bisogno.

Non sto chiedendo la piena implementazione di LaTEX, ma almeno qualcosa oltre le possibilità di RichTextBox, con linee di divisione, radici quadrate, ecc.

PS C # è così potente. Un modo per disegnare le formule con C # (.NET) dovrebbe essere con noi!

Le soluzioni sono state trovate:

  1. Questa soluzione utilizza la libreria MathTex (MimeTex nel passato) per generare un file gif da stringhe come TeX.
    Contro :

Ecco una lista di opzioni, estratte da diverse pagine Web online, e alcune domande simili su SO

  • WPF-Math , una libreria WPF per il rendering del markup TeX relativo alla matematica.
  • gNumerator è un controllo WinForms che esegue il rendering di MathML . È nativo C #, ma sembra essere piuttosto vecchio.
  • Math Expressions , un controllo commerciale di WinForm per la visualizzazione e la modifica delle equazioni matematiche. Nota: non libero
  • C’è una porta non ufficiale di JMathTex a un controllo WPF C #
  • La versione per Windows dell’editor LaTex Lyx utilizza una libreria nativa chiamata MikTex che potresti dare un’occhiata. Ho visto menzionare da qualche parte che il pacchetto tex4ht restituisce equazioni matematiche alle immagini
  • MimeTex / MathTex , come hai già detto
  • Puoi anche utilizzare un controllo WebBrowser e solo localmente includere una delle molte librerie javascript per il rendering di LaTex.
  • È ansible affidare il lavoro a Microsoft Word ( Esempio : richiede che gli utenti abbiano installato MS Word! )

Forse puoi usare l’ API Alpha di Wolfram per recuperare le immagini.

Se vuoi qualcosa oltre a un’abilità RichTextBox per il rendering di torta, divisioni e radici sqr e così via, puoi semplicemente utilizzare WebBrowserControl come finestra di testo. Quindi per rendere le formule puoi sfruttare le tecniche mostrate in questa pagina web, salvarle sul desktop e aprire il file html:

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

Ovviamente avrai bisogno di una syntax speciale (o dei pulsanti speciali della calcolatrice) per inserire la formula e suppongo che guardando il file customisations.js che guida quella pagina web potresti creare il tuo elenco di operatori e funzioni.

Ecco cosa farei se nessuna delle specifiche soluzioni .NET funzionasse per te:

È un po ‘hacky, ma funzionerà e i tuoi utenti non conosceranno la differenza. Scarica la libreria Mathjax . Quando l’utente inserisce l’equazione, è ansible convertire l’equazione in LaTex o MathML. Prenderesti quindi LaTex o MathML e genererai un file HTML che fa riferimento a Mathjax e visualizzerà il file nella tua piccola finestra WebBrowser (valida sia per WinForms che per WPF). Questo non dovrebbe richiedere una connessione internet.

Come ho detto, i tuoi utenti non saranno più saggi.