私はhtmlベースの電卓に取り組んでおり、式をレンダリングしてから評価したいのですが、これはすべてJavascriptで行う必要があります。式を LaTeX で記述し、レンダリングされた式をインタラクティブに編集できるようにしたいと考えていますが、他の言語でも機能します。
私が以前に試みたのは、式をインタラクティブに MathQuill でレンダリングし、MathJS で評価することです。ただし、これはある程度機能しますが、2 つのパッケージは異なる目的で設計されているため (MathQuill は LaTeX をレンダリングしますが、MathJS はカスタムの数学構文を持っています)、完全には機能しません (たとえば、ユーザーが入力\frac{5}{17*x}
して、が正しい構文である場合、それを評価し、MathJS からエラーを取得します)。
現在、次の 3 つの方法があります。
- 私が持っているものを続けてください(または、MathJaxに切り替えるかもしれません-どちらが優れていますか?)。
- レンダリングと評価の両方を行うツールを見つけます (ラテックスまたは他の言語であるかどうかに関係なく)。
- 近い (同じでない場合) 構文でレンダリングおよび評価するための 2 つのツールを見つける
- ここで推奨されているように、独自のレンダリングおよび評価ツールを作成します。これはちょっと面倒に思えるし、車輪の再発明はしたくないので、やりたくないです。
これを行うにはどうすればよいですか?
更新 1: altJSで利用可能な代替言語のリストを調べた後、ユーザー入力用の言語として Python、Ruby、または Basic を使用できると思います。もしそうしたら、それをレンダリングする可能性が非常に多く開かれます(技術的には「レンダリング」ではありませんが、そこにシンタックス ハイライターがいくつあるか考えてみてください)。ただし、ユーザーがこれらの言語のより高度な要素にアクセスできるようにしたくありません。これは、ユーザーを混乱させ、安全ではない可能性があるためです (eval
)。ユーザーが数学演算、変数 (使用できると指定したもの、およびユーザーが作成したもののみ)、関数 (使用できると指定したもの、およびユーザー定義のもののみ) を使用できるようにしたいだけです。使用できる言語のサブセットを制限する方法はありますか?
更新 2: altJS ページをさらに調べたところ、ほぼすべての言語が、言語 XYZ をページ上で実行する代わりに、言語 XYZ を JavaScript にコンパイルし、ページ上で JavaScript を実行するように設計されていることがわかりました。一つ一つ調べたわけではありませんが、ほとんどがこんな感じです。Brython のような他のものは、ブラウザーで言語 XYZ を実行するように設計されているようですが、ユーザーの入力言語としてではなく、JavaScript の代替/補完として使用されます。これらのメソッドを入力として使用できるようにするための回避策はありますか?
更新 3:その情報について @SpaceDog に感謝します。また、ユーザーが何を達成できるべきかについて具体的ではないことを指摘してくれてありがとう。だから、ここに私が達成したい機能があります:
- 基本演算(足し算、引き算、掛け算、割り算・分数、べき乗、根、剰余)
- 関数(三角関数、ログなど)
- 定数 (e、pi など)
- 変数 (割り当て、再割り当て、およびそれらの使用)
- ユーザー定義関数
LaTeXCalcは、最後の要件を除いて、これらの要件をすべて満たしているようです。また、Javascript にはないようです。
これは、私が考えた別のアイデアにつながります: プレゼンテーションに MathJax のようなものを使用してから、 Wolfram Alpha APIを使用して実際に計算を処理します。利点は、入力と出力の両方に、より高度なオプションがあることです。ただし、アプリケーションは役に立たなくなります (電卓が実質的に単なるクローンである場合、なぜ wolframalpha.com を使用しないのでしょうか?)、費用がかかり、アプリはオフラインで動作しません (これは HTML で記述されたデスクトップ アプリです)。 /CSS/JS)。それについての考えは?