C# 如何在WPF标签或面板中显示数学表达式?

C# 如何在WPF标签或面板中显示数学表达式?,c#,xaml,latex,label,mathml,C#,Xaml,Latex,Label,Mathml,我正在编写一个显示大量数学内容的软件。在windows窗体中,在标签中设置下标或希腊字母已经很困难了,我正在考虑切换到WPF 目前,我正在寻找在图形用户界面中呈现数学表达式、公式或符号的最佳方法。它们必须显示在标签或绘制的图形/图片中。没有实时/即时渲染,但有漂亮的修复符号 最好的方法是什么?我认为MathML应该得到很好的支持,但我找不到太多关于这方面的信息。我很高兴听到一些建议 在这里,我可以从中获得我的符号(或我更喜欢的符号): LaTeX代码(第一选择!代码已经存在,在软件和文档中出现

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

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

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

在这里,我可以从中获得我的符号(或我更喜欢的符号):

  • LaTeX代码(第一选择!代码已经存在,在软件和文档中出现相同的外观将非常棒)
  • MathML代码(Word 2007或更高版本中的LaTeX代码->Word公式->将普通MathML复制到剪贴板)
  • SVG
    (在Inkscape中呈现LaTeX并导出到XAML)
  • xmcd
    文件(Mathcad XML文档。不知道怎么做,但至少是XML)
  • html
    文件(由LaTeX->html或Mathcad->html编写)
我不会亲自考虑,但也许有很好的解决办法:

  • 图像(
    png
    -图标,
    pdf
    dvi
    eps
    svg
    直接导入)
  • 符号(如从字符映射粘贴的副本。不喜欢字体,找不到我需要的所有内容,也不会给出公式语法的交换)

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

我会选择使用数据模板的纯xaml方法。不需要另一种矢量格式或编校引擎。 可以对表达式树中的每个表达式使用datatemplate。使用ViewBox可以实现拉伸,因此最顶端的表达式将比内部表达式大。datatemplates将从表达式树生成可视树。我的意思是,contentpresenter中会有contentpresenter

最好的建议是,表达式可视化可以响应和交互,就像MS Word或Excel中的数学表达式一样


我可以帮助您实现,因为这不是一件小事,如果您不熟悉wpf datatemplates,据我所知,最好的渲染(在纸上)是通过矢量文件的后期转换实现的。我更喜欢使用GDI+(System.Drawing)或wpf(System.Media)呈现公式。让我知道我们是否可以合作使用WPF解决方案。

考虑使用开源库(免责声明:我是它的“当前维护者”)


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

快速搜索给出了这一点,希望它能帮助您将要求扩展到标准XML样式的unicode字符之外,例如,您可以显示带有
∞;
?@JoeStanton-Thx的无限符号用于链接。我也发现了。但是那里的一切都是“旧的”、“不活跃的”、“非官方的”或者只是为了节省时间。我希望得到更新的想法,因为XAML在上一次变得越来越流行。我从这个链接中得到了一些想法,但希望有一些更实用的东西。@ChrisW。是的,我将需要\beta^prime\infty或类似的标签。我想使用OT字体。我想知道为什么SVG和MathML(即XML)似乎很难包含在XAML(即XML)中。标签和公式应具有可扩展性,以适应文本、图形和文档。XML只是一种结构格式。XML内容的语义完全取决于场景;没有理由相信您可以将SVG和XAML混用在一起,正如您所期望的那样,例如,将XSLT嵌入XHTML文档并使其“正常工作”。如果您的字体带有您想要使用的符号和图形,那么您应该能够使用来在WPF中显示。然而,实现这一点肯定会非常耗时。这是否支持MathML?@VivekDev否。如果您能够提供自己的MathML解析器,则可以转换为WPFMath数据结构并重用常见的渲染基础结构。如果您想提供帮助或建议此功能,请随时与我们联系。好的,谢谢。首先,我将查看WPFMath,然后决定。请注意,版本0.6及更低版本支持.NET framework 4.0,这是非常有用的。