我正在制作一个基于HTML的计算器,并且希望在Javascript中渲染表达式并进行评估。我希望表达式以LaTeX编写,并且可以交互式地编辑已呈现的表达式,但其他语言也可以。之前尝试过使用MathQuill进行交互渲染,然后使用MathJS进行评估。这在某种程度上可以工作,但由于两个软件包的设计目标不同(MathQuill用于呈现LaTeX,而MathJS具有自定义的数学语法),因此它的可靠性不够高(例如,如果用户输入
目前,我看到三种继续进行的方法:
\frac{5}{17*x}
并假定它是正确的语法,然后进行评估并从MathJS获得错误)。目前,我看到三种继续进行的方法:
- 继续使用我现有的内容(或者可能切换到更好的MathJax)。
- 查找可以同时进行渲染和评估的工具(无论是使用LaTeX还是其他语言)。
- 查找具有相近(如果不是相同)语法的渲染和评估两个工具。
- 按照这里建议的编写自己的渲染和评估工具。我不想这样做,因为这似乎有点繁琐,并且我不想重新发明轮子。
eval
)。我只希望用户能够使用数学运算、变量(仅限我指定的那些,以及用户自定义的),以及函数(仅限我指定的那些,以及用户自定义的)。有没有办法限制可以使用的子集语言?
更新 2: 我在altJS页面上再次搜索发现,几乎所有语言都是设计用于将语言XYZ编译成JavaScript,然后在页面上运行JavaScript,而不是在页面上运行语言XYZ。在页面上运行,我还没有详细研究每一个语言,但是其中大部分似乎都是这样。其他一些语言,例如Brython,则似乎被设计为在浏览器中运行语言XYZ,但作为JavaScript的替代/补充而不是用户输入语言。有没有一些解决方法,以便我可以将这些方法用作输入?
更新 3: 感谢@SpaceDog提供的信息,并指出我在说明用户应该能够实现什么方面还不够具体。因此,这里是我希望实现的功能:
- 基本运算(加、减、乘、除/分数、指数、开方、模数)
- 函数(三角函数、对数等)
- 常量(e、pi等)
- 变量(赋值、重新赋值和使用它们)
- 用户定义的函数
LaTeXCalc似乎符合这些要求,除了最后一个。此外,它似乎不是用Javascript编写的。
这让我想到另一个想法:使用类似MathJax的东西来呈现,然后使用Wolfram Alpha API来处理计算。它的好处是它会有更高级的选项,既适用于输入又适用于输出。然而,应用程序将变得无用(如果计算器实际上只是一个克隆,为什么不直接使用wolframalpha.com?),它需要花钱,并且该应用程序无法脱机工作(它是一个使用HTML/CSS/JS编写的桌面应用程序)。对此有何想法?