Ich arbeite an einem HTML-basierten Rechner, und ich möchte einen Ausdruck rendern, dann bewerten, und all dies muss in Javascript erfolgen. Ich würde es vorziehen, wenn der Ausdruck in LaTeX geschrieben wird und es möglich ist, den gerenderten Ausdruck interaktiv zu bearbeiten, aber andere Sprachen könnten funktionieren.Bewertung von Latex Math in Javascript
Was ich zuvor versucht habe, ist, den Ausdruck interaktiv mit MathQuill zu rendern und dann mit MathJS auszuwerten. Dies funktioniert bis zu einem gewissen Grad jedoch, da die beiden Pakete unterschiedliche Ziele haben (MathQuill macht LaTeX, während MathJS eine benutzerdefinierte mathematische Syntax hat), funktioniert es nicht perfekt (zB wenn ein Benutzer \frac{5}{17*x}
eintippt und davon ausgeht) es ist die korrekte Syntax, dann wertet es aus und bekommt einen Fehler von MathJS).
Derzeit sehe ich drei Möglichkeiten fortzufahren: (? Oder vielleicht zu MathJax- wechseln, die besser ist)
- weiter mit dem, was ich habe.
- ein Werkzeug finden, das Rendering tut und Auswertung (ob es in Latex oder einer anderen Sprache ist)
- Finden Sie zwei Werkzeuge für die Darstellung und Auswertung mit der Nähe (wenn nicht gleich) Syntax
- mein eigenes Rendering schreiben und Bewertungswerkzeug, wie empfohlen here. Ich würde es vorziehen, dies nicht zu tun, weil es irgendwie langweilig erscheint, und ich möchte das Rad nicht neu erfinden.
Was ist der Bast Weg, dies zu tun?
Update 1: Nachdem bei altJS durch die Liste der alternativen Sprachen suchen, ich glaube, ich Python, Ruby, oder Basic als Sprache für die Benutzereingabe nutzen könnte. Wenn ich das tun würde, würde es so viele Möglichkeiten eröffnen, es zu rendern (technisch gesehen ist es kein "Rendering", sondern denke nur darüber nach, wie viele Syntax-Highlighter da draußen sind). Ich möchte jedoch nicht, dass Benutzer auf die fortgeschritteneren Elemente dieser Sprachen zugreifen können, da dies zu Verwirrung bei meinen Benutzern führen würde und auch unsicher sein könnte (wie bei Verwendung von eval
). Ich möchte nur, dass Benutzer in der Lage sind, mathematische Operationen, Variablen (nur diejenigen, die ich angeben kann, und auch vom Benutzer erstellt) und Funktionen (nur diejenigen, die ich angeben kann, und auch benutzerdefiniert) zu verwenden. Gibt es eine Möglichkeit, die Teilmenge der Sprache zu beschränken, die verwendet werden kann?
Update 2: sah ich einige um mehr auf der altJS Seite, und erkennen, dass fast alle Sprachen entwickelt wurden Sprache XYZ JavaScript zu kompilieren, dann das JavaScript auf der Seite läuft, statt Laufe Sprache XYZ auf der Seite. Ich habe nicht jeden Einzelnen untersucht, aber die meisten scheinen so zu sein. Andere, wie Brython, scheinen so konzipiert zu sein, dass sie die Sprache XYZ im Browser ausführen, aber als Ersatz/Ergänzung zu JavaScript statt als Eingabesprache für den Benutzer. Gibt es eine Problemumgehung, damit ich diese Methoden als Eingabe verwenden kann?
Update 3: Vielen Dank an @SpaceDog für diese Informationen, und um darauf hinzuweisen, dass ich nicht spezifisch darin gewesen bin, was Benutzer erreichen sollten. So, hier ist die Funktionalität, die ich will erreicht werden:
- Grundfunktionen (Addition, Subtraktion, Multiplikation, Division/Fraktionen, Potenzierung, Wurzeln, Modul)
- Funktionen (trigonometrische Funktionen, Protokolle, usw.)
- Konstanten (e, pi, etc.)
- Variablen (Zuordnung, Neuzuordnung, und mit ihnen)
- Benutzerdefinierte Funktionen
LaTeXCalc all diesen Anforderungen gerecht zu werden scheint, mit Ausnahme der Letzter. Es scheint auch nicht in Javascript zu sein.
Dies bringt mich zu einer anderen Idee, die ich mir gedacht habe: Verwenden Sie etwas wie MathJax für die Präsentation, dann verwenden Sie Wolfram Alpha API, um tatsächlich die Berechnung zu behandeln. Die Vorteile sind, dass es viel mehr erweiterte Optionen für Eingabe und Ausgabe hätte. Allerdings wäre die Anwendung nutzlos (warum nicht einfach wolframalpha.com verwenden, wenn der Rechner praktisch nur ein Klon ist?), Es kostet Geld und die App würde nicht offline funktionieren (es ist eine Desktop-App, geschrieben in HTML)/CSS/JS). Gedanken dazu?
Vielleicht kann meine Antwort auf [diese] (http://stackoverflow.com/a/42232776) ähnliche Frage helfen. – Jeff