【问题标题】:How to render a formula in WPF or WinForms如何在 WPF 或 WinForms 中呈现公式
【发布时间】:2012-02-12 12:39:08
【问题描述】:

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

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

我问的不是 LaTEX 的完整实现,但至少是 RichTextBox 之外的东西,包括分割线、平方根等。

【问题讨论】:

  • 这个article 看起来有帮助
  • 乍一看很有趣。谢谢!我明天会审查它并在这里发布。

标签: c# wpf winforms user-controls


【解决方案1】:

这是一个选项列表,从几个在线网页中提取,以及 SO 上的 fewsimilarquestions

  • WPF-Math,一个用于渲染数学相关 TeX 标记的 WPF 库。
  • gNumerator 是一个 WinForms 控件,它呈现 MathML。它是原生 C#,但似乎很旧。
  • Math Expressions,用于显示和编辑数学方程式的商业 WinForms 控件。 注意:不是免费的
  • C# WPF 控件有一个unofficial port of JMathTex
  • Windows 版本的 LaTex 编辑器Lyx 使用一个名为MikTex 的本机库,您可以查看一下。我在某处看到提到 tex4ht 包将数学方程式渲染为图像
  • MimeTex/MathTex,正如你已经提到的
  • 您也可以使用WebBrowser 控件,并在本地包含one of many javascript libraries 用于渲染LaTex。
  • 您可以将工作抵押到 Microsoft Word 上(Example - 要求用户安装 MS Word!

【讨论】:

  • +1 你可能应该得到这个赏金......在我发布答案之前我没有看到你的 WebBrowser 控制点。
  • WPF-Math 现在处于活动状态。我已经 fork 到 GitHub,联系了原作者,得到了他的祝福。见github.com/ForNeVeR/wpf-math
【解决方案2】:

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

【讨论】:

  • 感谢您的回复。但它不是仅限网络吗?如何嵌入东西作为stadalone winforms 控件?能否请您提供一些简短的提示或代码?
  • 有点赌博,但您可以使用 WebRequest 从您的 winforms 应用程序调用 API,并将响应解析为 XML 以获得正确的节点。然后只需将 PictureBox 的来源设置为 url。
  • 这就是使用“独立”一词的原因。 “使用 WebRequest”对于独立应用程序来说负担太大了。在极少数情况下,它是可以接受的,我同意。但这绝对不是 winforms 或 WPF 的通用答案。
  • +1 - 即使它是一个独立的应用程序,上线并使用 Wolfram Alpha 的 API 的模式也是一个好主意。
  • “一种上网和使用 Wolfram 的模式” - 一个很好的笑话,是的))告诉你的客户)))
【解决方案3】:

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

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

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

【讨论】:

    【解决方案4】:

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

    这有点老套,但它会起作用,而且您的用户不会知道其中的区别。下载Mathjax 库。当您的用户输入方程式时,您可以将方程式转换为 LaTex 或 MathML。然后,您将使用 LaTex 或 MathML 并生成一个引用 Mathjax 的 HTML 文件,并在您的小 WebBrowser 窗口中显示该文件(对 WinForms 和 WPF 都有效)。这应该不需要互联网连接。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-12
      • 2021-03-19
      • 1970-01-01
      • 2010-10-20
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多