如何在WPF或WinForms中呈现公式

33

2018年更新 TL;DR; WPF的LaTeX https://github.com/ForNeVeR/wpf-math

原问题 我需要在Windows Forms或WPF中绘制数学公式。某些“FormulaTextBox”控件正是我所需要的。

我不是在要求完全实现LaTeX,但至少需要比RichTextBox拥有更多的功能,例如分数线、平方根等。


1
这篇文章看起来可以帮助。 - Jake Berger
一开始看起来很有趣。谢谢!我会在明天审查并在这里发布。 - MajesticRa
4个回答

36

以下是从多个网页和一些关于 SO 的问题中提取出的选项列表,还有一些类似的问题 SO 上的问题

  • WPF-Math,用于呈现与数学相关的 TeX 标记的 WPF 库
  • gNumerator 是一个 WinForms 控件,可以呈现 MathML。它是原生 C#,但似乎相当古老。
  • Math Expressions,一个商业 WinForms 控件,用于显示和编辑数学方程。注意:不免费
  • 有一个 JMathTex 的非官方端口到 C# WPF 控件
  • LaTex 编辑器Lyx的 Windows 版本使用了名为MikTex 的本机库,您可以看一下。我在某个地方看到提到tex4ht包将数学方程呈现为图像
  • MimeTex/MathTex,如您所提到的
  • 您还可以使用WebBrowser控件,并本地包含多个 LaTex 渲染的 javascript 库之一,例如MathJax
  • 您可以将工作转给 Microsoft Word (示例 - 需要用户已安装 MS Word!)。

  • +1 你可能应该得到这个奖励...在我发布答案之前,我没有看到你的WebBrowser控件指针。 - Jeremy Thompson
    7
    WPF-Math现已启用。我已将其fork到GitHub,并联系了原作者获得了他的支持。请访问https://github.com/ForNeVeR/wpf-math。 - ForNeVeR

    2

    1
    谢谢您的回复。但这不仅限于Web吗?如何将此嵌入独立的WinForms控件中?您能否提供一些简短的提示或代码? - MajesticRa
    这有点冒险,但你可以使用 WebRequest 从你的 WinForms 应用程序调用 API 并解析 XML 响应以获取正确的节点。然后只需将 PictureBox 的源设置为该 URL 即可。 - TJHeuvel
    1
    这就是为什么使用“独立”一词。对于独立应用程序来说,“使用 WebRequest”太过繁琐。在某些罕见情况下,我同意它可能是可以接受的。但它绝对不是 winforms 或 WPF 的通用答案。 - MajesticRa
    即使它是一个独立的应用程序,提供在线使用 Wolfram Alpha 的 API 的模式也是一个好主意。 - Jeremy Thompson
    6
    “一种上网并使用沃尔夫拉姆的模式”- 这是一个好笑话,是的)) 可以告诉你的客户))) - MajesticRa

    0
    如果您需要超越RichTextBox渲染饼图、分割线和平方根等能力的东西,您可以使用WebBrowserControl作为文本框。然后,要呈现公式,您可以利用此网页中展示的技术,将其保存到桌面并打开HTML文件:

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

    显然,您需要特殊的语法(或特殊的计算器按钮)来输入公式,我猜测从定制.js文件驱动该网页,您也可以制作自己的运算符和函数列表。


    0

    如果没有任何.NET特定的解决方案适用于您,这是我会做的:

    这有点hacky,但它会起作用,而且您的用户不会察觉到任何区别。下载Mathjax库。当用户输入方程式时,您可以将方程式转换为LaTex或MathML格式。然后,您将采取LaTex或MathML并生成一个HTML文件,该文件引用Mathjax,并在您的小型WebBrowser窗口中显示该文件(适用于WinForms和WPF)。这不需要互联网连接。

    就像我说的那样,您的用户不会知道任何差异。


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