我正在寻找一个在Windows GUI应用程序中显示LaTeX或MathML字符串的函数。
例如:char* myLaTeX = "\\dfrac{5}{3}";
我正在寻找的功能可以在我设置的逻辑坐标中显示我窗口中的格式化分数。
有没有办法只使用DrawText()
或TextOut()
?
答案 0 :(得分:1)
我是Smalltalk程序员,所以让我告诉你我是如何解决的:
EM_GETOLEINTERFACE
消息获取IRichEditOle
界面QueryInterface
ITextDocument2
GetSelection
然后SetText
输出'5/3'
(String
)Range
和Select
选择全部(例如'5/3'
)BuildUpMath
的{{1}}来生成数学符号对于一般表达式,将表达式的解析树上的打印访问者替换为步骤3。
请注意,步骤3和5不适用于TeX,而适用于Unicode Nearly Plain-Text Encoding of Mathematics,这是一种派生格式。使用这种格式的原因是,至少根据我的经验,只有相当简单的TeX表达式才能正确呈现。当然,值得尝试一下。在这种情况下,使用TeX格式(据我所知,LaTeX不受支持,因此在示例中0
应写为\dfrac{5}{3}
)和{5 \over 3}
常量({{1而不是tomTeX
作为=1
的参数。
这是一个TeX示例:
我从表达式中生成:
0
使用此功能时要记住的另一件事是它需要RichEdit版本6+,它附带最新版本的Office。
最后,经过一些实验,我意识到只需要两个模块就可以工作:BuildUpMath
和$\int_{-\infty}^\pi {x_0\over {\sqrt{y_0^{t^2} + 1}} + {5\over 3}}\; dt$
,第一个不要与Windows附带的dll混淆。
RICHED20.dll