【问题标题】:How can I display mathematical expressions in WPF labels or panels?如何在 WPF 标签或面板中显示数学表达式?
【发布时间】:2013-07-25 14:26:12
【问题描述】:

我正在编写显示大量数学内容的软件。由于在 Windows 窗体中已经很难在标签中设置下标或希腊字母,我正在考虑切换到 WPF。

目前,我正在寻找在我的图形用户界面中呈现数学表达式、公式或只是一个符号的最佳方法。它们必须显示在标签或绘制的图形/图片中。没有实时/即时渲染,但漂亮的修复符号。

最好的方法是什么?我认为应该很好地支持 MathML,但我找不到很多关于它的信息。我很高兴听到一些建议。

在这里,我可以从中获取我的符号(或我想要的):

  • LaTeX 代码(首选!代码已经存在,并且在软件和文档中的相同外观会很棒)
  • MathML 代码(Word 2007 或更高版本中的 LaTeX 代码 -> Word 方程式 -> 将纯 MathML 复制到剪贴板)
  • SVG(在 Inkscape 中渲染 LaTeX 并导出到 XAML)
  • xmcd 文件(Mathcad XML 文档。不知道如何,但至少是 XML)
  • html 文件(由 LaTeX->html 或 Mathcad->html
  • 编写

我个人不会考虑,但也许有很好的解决方案:

  • 图片(png-icons、pdf、dvi、eps、svg直接导入)
  • 符号(例如从字符映射中复制粘贴。不喜欢字体,找不到我需要的所有字体,并且无法交换公式语法)

我认为使用 LaTeX、MathML 或 html 会很棒,因为它们也可以用于文档。我也可以考虑将计算结果导出到*.tex 文件或内部完全使用 LaTeX 生成图形(tikz,pgfplots...)

【问题讨论】:

  • 快速搜索给了我这个,希望对stackoverflow.com/questions/8899204/…有帮助
  • 要求是否超出标准 XML 样式的 unicode 字符,例如您可以使用∞ 显示类似无穷大符号的内容?
  • @JoeStanton 感谢链接。我也发现了。但是那里的一切都是“旧的”、“不活跃的”、“非官方的”,或者只是为了我的目的而耗费时间。我希望能获得更新的想法,因为 XAML 在最近一次变得越来越流行。我从这个链接中得到了一些想法,但希望那里有更实用的东西。
  • @ChrisW。是的,我需要像 \beta^prime_\infty 或类似的标签。想为此使用OT字体。我想知道为什么 SVG 和 MathML(即 XML)似乎很难包含在 XAML(即 XML)中。标签和公式应可扩展以适应文本、图形和文档。
  • XML 只是一种结构格式。 XML 内容的语义完全依赖于场景;没有理由相信您可以混合和匹配 SVG 和 XAML,而不是期望您可以,例如将 XSLT 嵌入到 XHTML 文档中并让它“正常工作”。如果您有想要使用的符号和图形的字体,那么您应该可以使用RichTextBox 在 WPF 中显示。

标签: c# xaml latex label mathml


【解决方案1】:

考虑使用开源 WPF-Math 库(免责声明:我是它的当前维护者)。

它可以帮助您在 WPF 窗口中显示 LaTeX 表达式。它还使用矢量图形而不是位图,因此公式在现代显示器上可以很好地缩放。

【讨论】:

  • 这是否支持 MathML?
  • @VivekDev 不,它没有。如果您能够提供自己的 MathML 解析器,则可以转换为 WPFMath 数据结构并重用通用渲染基础架构。如果您想帮助或提出该功能,请随时在 GitHub 上与我们联系。
  • 好的,谢谢。首先我会看一下 WPFMath,然后再决定。
  • 请注意,0.6及更低版本支持.NET framework 4.0,非常好用。
【解决方案2】:

我会选择使用数据模板的纯 xaml 方法。不需要其他矢量格式或 rednering 引擎。 您可以为表达式树中的每个表达式使用数据模板。使用视图框可以实现拉伸,因此最上面的表达式会比内部表达式大。您的数据模板将从您的表达式树生成可视化树。我的意思是 contentpresenter 里面会有 contentpresenter。

最大的优点是表达式可视化可以响应和交互,就像 MS Word 或 Excel 中的数学表达式。

如果您不熟悉 wpf 数据模板,我可以帮助您实现,因为这不是微不足道的

【讨论】:

  • 但是实现这个肯定会很耗时
【解决方案3】:

据我所知,最好的渲染(在纸上)是通过矢量文件的后期转换实现的。我更喜欢使用 GDI+ (System.Drawing) 或 WPF (System.Media) 来呈现公式。让我知道我们是否可以就 WPF 解决方案进行合作。

【讨论】:

    猜你喜欢
    • 2013-03-06
    • 2014-05-13
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多