我正在寻找一个在 Windows GUI 应用程序中显示 LaTeX 或 MathML 字符串的函数。
例如:char* myLaTeX = "\\dfrac{5}{3}";
我正在寻找的函数可以在我的窗口中按照我设置的逻辑坐标显示格式化的分数。
有没有办法只使用 DrawText()
或 TextOut()
来做到这一点?
最佳答案
我是一名 Smalltalk 程序员所以让我告诉你我是如何解决这个问题的:
- 使用
EM_GETOLEINTERFACE
消息获取IRichEditOle
接口(interface) - 使用此接口(interface)
QueryInterface
ITextDocument2
- 使用
GetSelection
然后使用SetText
输出'5/3'
(String
) - 使用
Range
和Select
选择全部(即'5/3'
) - 使用带参数
0
的BuildUpMath
生成数学符号
对于一般表达式,将步骤 3 替换为表达式解析树上的打印访问者。
请注意,第 3 步和第 5 步不是针对 TeX,而是针对 Unicode Nearly Plain-Text Encoding of Mathematics , 这是一种派生格式。使用这种格式的原因是,至少根据我的经验,只有相当简单的 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++ - 用 C++ 显示 latex 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42634927/