如何在WPF或WinForms中呈现公式

更新2018 TL; DR; LaTEX for WPF https://github.com/ForNeVeR/wpf-math

原始问题我需要有一种方法在Windows窗体或WPF中绘制数学公式。 一些“FormulaTextBox”控件正是我需要的。

我不是要问LaTEX的完整实现,但至少有一些超出RichTextBox的可能性,包括分割线,平方根等。

这是一个选项列表,从几个网页上提取,以及一些关于SO的类似 问题

  • WPF-Math ,一个用于渲染与数学相关的TeX标记的WPF库。
  • gNumerator是一个呈现MathML的WinForms控件。 它是原生的C#,但看起来很旧。
  • Math Expressions ,一种用于显示和编辑数学方程式的商业WinForms控件。 注意:不是免费的
  • 有一个非官方的JMathTex端口到C#WPF控件
  • Windows版本的LaTex编辑器Lyx使用一个名为MikTex的本机库,您可以查看。 我看到某处提到tex4ht包将数学方程式呈现给图像
  • MimeTex / MathTex ,正如您已经提到的那样
  • 您还可以使用WebBrowser控件,并在本地包含许多用于呈现LaTex的JavaScript 库之一。
  • 您可以将工作典当化为Microsoft Word( 示例 – 要求用户安装MS Word!

也许您可以使用Wolfram Alpha API来检索图像。

如果你想要RichTextBox之外的东西来渲染饼图,分区和sqr根等,你可以使用WebBrowserControl作为文本框。 然后,为了渲染公式,您可以利用此网页中显示的技术,将其保存到桌面并打开html文件:

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

显然你需要一个特殊的语法(或特殊的计算器按钮)来输入公式,我猜测看看开发那个网页的customisations.js文件,你也可以创建自己的运算符和函数列表。

如果.NET特定解决方案都不适合您,我会这样做:

它有点hacky,但它会工作,你的用户将不知道差异。 下载Mathjax库。 当您的用户输入等式时,您可以将等式转换为LaTex或MathML。 然后,您将使用LaTex或MathML生成一个引用Mathjax的HTML文件,并在您的微小WebBrowser窗口中显示该文件(对WinForms和WPF都有效)。 这不应该要求互联网连接。

就像我说的,你的用户不会更聪明。