c++ - 用 C++ 显示 latex 字符串

标签 c++ winapi latex

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

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

我正在寻找的函数可以在我的窗口中按照我设置的逻辑坐标显示格式化的分数。 有没有办法只使用 DrawText()TextOut() 来做到这一点?

最佳答案

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

  1. 使用EM_GETOLEINTERFACE 消息获取IRichEditOle 接口(interface)
  2. 使用此接口(interface)QueryInterface ITextDocument2
  3. 使用GetSelection然后使用SetText输出'5/3'(String)
  4. 使用RangeSelect 选择全部(即'5/3')
  5. 使用带参数 0BuildUpMath 生成数学符号

enter image description here

对于一般表达式,将步骤 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 示例:

enter image description here

这是我从表达式中产生的:

$\int_{-\infty}^\pi {x_0\over {\sqrt{y_0^{t^2} + 1}} + {5\over 3}}\; dt$

使用此功能时要记住的另一件事是它需要 RichEdit 版本 6+,它随最新版本的 Office 一起提供。

最后,经过一些实验,我意识到只需要两个模块就可以工作:RICHED20.dllMSPTLS.DLL,第一个不要混淆使用Windows自带的dll。在

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

关于c++ - 用 C++ 显示 latex 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42634927/

相关文章:

web-applications - 可以从不受信任的来源安全地执行 TeX 代码吗?

latex - 你能在 tufte 讲义 pdf 中有一个全宽的表格吗?

c++ - boost.random buggy 警告 - 这是什么意思?

c++ - Windows 启动时的第二次自动运行

c++ - 模拟一个显示器,在windows上获取视频流

c++ 全屏 windows 7

c# - CoWaitForMultipleHandles API 的行为与记录不符

r - 在 Travis CI 上构建 R 包时出错“"tlmgr update --self"失败”

c++ - 如何为递归函数编写方法定义?

c++ - 哪个范围有静态变量?