自己的计算机代数系统应用程序中的类似Mathematica(LaTeX)排版

3
作为我经常使用Mathematica,我想写一个小型的免费计算机代数系统(CAS),只公开必要的函数和包的非常小的子集,我希望以适当的方式向用户呈现结果,就像Mathematica一样(忽略背景中的Facebook徽标:D):
我的第一个想法是在后台创建LaTeX代码,并将源代码pdflatex并将PDF包含在视图中...但这似乎太过杀鸡焉用牛刀!我想要用C++或C#编写这个CAS,并且想知道是否有任何推荐的解决方案来输出像那样漂亮的公式。
我的第一个想法是“实时公式编辑视图”,但如果有一个输入框来输入命令和公式,并且上面的视图只是不可编辑的输出,那也可以。

3
不要抑制你的热情,但已经有几个开源CAS程序了。Maxima及其带GUI的变体wxmaxima,和Sage是我想到的。这样的项目通常不是单人完成,我认为你可能低估了所需的努力。此外,我不会首先考虑如何实现最好的输出,而是首先做核心CAS工作。 - Sjoerd C. de Vries
我知道,但是我已经实现了一些核心组件。我的目标只是为了练习我的技能,并且实现我们在CAS课程中学到的算法,我想要实现的只是一些简单的东西来体验一下它的“味道” :) - Christian Ivicevic
2
我可能有所偏颇,但如果我想编写自己的CAS,展示层不会是我的主要初始关注点。您始终可以稍后使其更加复杂,或者甚至可以从CAS表达式生成Mathematica框式表达式,并暂时使用Mathematica FE。而且,我可能不会选择您提到的任何一种语言作为实现语言,而是会选择一些具有良好FFI的现代快速函数语言,例如OCaml(或LISP)。只是我的两分钱。 - Leonid Shifrin
嗨,Christian。Symbolism是一个用于C#中代数表达式自动化简的库。它可以作为计算机代数系统的核心。 - dharmatech
2个回答

5
我能想到几种方法。
1. 使用LaTeX在后台排版公式,正如您所说的那样。Cadabra就是这样做的。 2. 使用 TeXmacs作为前端。 Cadabra就是这样做的。 3. 使用 MathJax。这是一个JavaScript框架,将TeX方程渲染为图像或MathML。如果您在UI工具包中有HTML视图,则很容易使用它。例如,MathJax在姊妹站点 MathOverflow中使用。
我发现第三种路线最有吸引力。

+1 MathJax似乎是这样一个小项目中最方便的解决方案!我会看一下是否显示图像或HTML,但非常酷的解决方案。 - Christian Ivicevic
TeXMacs可能是最省力的选择。已经有一个外部程序的标准接口,它已经被许多计算机代数系统(CAS)使用。然后您可以集中精力编写您的CAS。 - Simon

2

如果需要在后台调用LaTeX,请不要使用pdflatex,而是使用非PDF的latex生成DVI文件,然后使用dvipng将其转换为PNG格式。

可以查看preview包或standalone类,以获得正确大小的输出(即只有公式,而不是整个页面)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接