用c ++显示一个乳胶串

时间:2017-03-06 20:27:27

标签: c++ winapi latex

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

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

我正在寻找的功能可以在我设置的逻辑坐标中显示我窗口中的格式化分数。 有没有办法只使用DrawText()TextOut()

1 个答案:

答案 0 :(得分:1)

我是Smalltalk程序员,所以让我告诉你我是如何解决的:

  1. 使用EM_GETOLEINTERFACE消息获取IRichEditOle界面
  2. 将此界面用于QueryInterface ITextDocument2
  3. 使用GetSelection然后SetText输出'5/3'String
  4. 使用RangeSelect选择全部(例如'5/3'
  5. 使用带有参数BuildUpMath的{​​{1}}来生成数学符号
  6. enter image description here

    对于一般表达式,将表达式的解析树上的打印访问者替换为步骤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示例:

    enter image description here

    我从表达式中生成:

    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