用C++显示胶乳字符串

用C++显示胶乳字符串,c++,winapi,latex,C++,Winapi,Latex,我正在寻找一个在windows GUI应用程序中显示LaTeX或MathML字符串的函数 例如:char*myLaTeX=\\dfrac{5}{3} 我正在寻找的函数可以在我的窗口中以我设置的逻辑坐标显示格式化的分数。 使用DrawText或TextOut有什么方法可以做到这一点吗?我是一名Smalltalk程序员,让我告诉你我是如何解决这个问题的: 使用EM_GETOLEINTERFACE消息获取IRichEditOle接口 使用此接口可查询接口ITextDocument2 使用GetSele

我正在寻找一个在windows GUI应用程序中显示LaTeX或MathML字符串的函数

例如:char*myLaTeX=\\dfrac{5}{3}

我正在寻找的函数可以在我的窗口中以我设置的逻辑坐标显示格式化的分数。
使用DrawText或TextOut有什么方法可以做到这一点吗?

我是一名Smalltalk程序员,让我告诉你我是如何解决这个问题的:

使用EM_GETOLEINTERFACE消息获取IRichEditOle接口 使用此接口可查询接口ITextDocument2 使用GetSelection,然后使用SetText输出“5/3”字符串 使用“范围”并选择以选择全部,即“5/3” 将BuildUpMath与参数0一起使用以生成数学表示法 对于常规表达式,将步骤3替换为表达式解析树上的打印访问者

请注意,步骤3和5不适用于TeX,而是适用于作为派生格式的。使用这种格式的原因是,至少根据我的经验,只有相当简单的TeX表达式才能正确渲染。当然,值得一试。在这种情况下,据我所知,LaTeX不受支持,所以在示例中,\dfrac{5}{3}应该写为{5\over 3},并且tomTeX常量=1而不是0作为BuildUpMath的参数

以下是一个TeX示例:

我从这个表达中得出:

$\int_{-\infty}^\pi {x_0\over {\sqrt{y_0^{t^2} + 1}} + {5\over 3}}\; dt$
使用此功能时需要记住的另一件事是,它需要RichEdit版本6+,这是Office最新版本附带的

最后,经过一些实验后,我意识到只有两个模块才能工作:RICHED20.dll和MSPTLS.dll,第一个模块不能与Windows附带的dll混淆。在地图上寻找它们

%ProgramFiles%\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\OFFICE16

一厢情愿。你需要一个图书馆。这绝非小事。没有人可以帮你。搜索一个C++库。你如何解析胶乳?你不解析它,你从数学表达式的语法树中生成它,它由表示操作、函数和参数的对象组成。根据我的经验,即使支持LaTex,我发现派生格式工作得更好。询问者希望将LaTex源代码作为输入,并将其呈现为数学。正如你的回答所暗示的,你能用丰富的编辑控件做到这一点吗?@DavidHeffernan是的,这是我的理解,我想说的是,你应该使用SetText和LaTeX源代码,用BuildUpMath渲染它。细节是,在这种情况下,参数应该是tomTeX=1,而不是0,但根据我的经验,这并不是很好,所以我使用了派生的简化格式,其手册在我之前的评论链接中。