qt - 在 QML 中嵌入 Latex 的可能性

标签 qt latex qml text-rendering

我正在 QML(带有 C++ 后端)中做一个演示系统,类似于 this one .

我希望能够包含一些 Latex 代码来显示一些数学(仅需要最低限度的 Latex 功能,例如总和、分数、上减号以及数学字体)。

我认为这样做的可能性如下:

  • 使用latex2e:
    1. 将 Latex 代码编译为 DVI 文档(使用 latex)
    2. 将 DVI 转换为 SVG(使用 dvisvgm)
    3. 使用 QML(也支持 SVG)中的图像显示此内容
  • 使用MathJax:
    1. 将 Latex 代码封装在一个小 HTML 文件中 + 包含 MathJax JS 库
    2. 使用 QML 的 WebKit 显示此内容
  • 自定义解决方案(C++):
    1. 编写或包含现有的最小 Latex 数学解析器
    2. 使用自定义绘画编写 QDeclarativeItem

还有其他我没有看到的解决方案吗?我更喜欢第一个解决方案,因为第二个听起来太重,第三个太难。

我发现数学公式的基线存在以下问题:我希望能够包含内联公式(在段落内)。目前,文本段落是使用 QML 文本元素呈现的。是否可以在 Text 元素(可能使用 HTML img 元素)中包含具有指定基线的图像?另外,如何确定渲染的 Latex 文档的基线?

注意:预渲染 Latex 代码的时间没有问题。我将缓存已渲染的公式,因此对演示文稿文档中包含的每个公式调用 latex + dvisvgm 应该没有问题。

另请注意,我使用了预处理器(我不是手动编写 QML 代码,而是生成它)。因此,我不需要 Latex 代码的 QML 元素,但我可以生成带有 Image 元素的 QML 代码片段(对于第一个解决方案)。这应该可以简化渲染图像的嵌入。

使用内联 Latex 时,我也不需要支持包装公式。 (Latex 在编写内联公式时会这样做,但我只使用小公式,无论如何我都不想被包装。)

最佳答案

我认为这是三个不错的选择,我想不出任何其他方法。

听起来您需要将公式与某些文本段落对齐,因此我认为选项 2 是一个很好的方法。

使用WebKit组件并不难。我不确定你所说的“太重”是什么意思。

干杯!

关于qt - 在 QML 中嵌入 Latex 的可能性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13568233/

相关文章:

c++ - Debian 上的 Qt Creator 编译器问题

qt - 如何将 QProgressBar 添加到 QMenuBar?

latex - 如何制作自己的 latex 数学符号?

python - Jupyter 通过 LaTeX 下载为 PDF 在空白处切断代码

latex - 以两列格式插入整页表格(在页面顶部或底部)

qt - 在运行时在多个 .qrc 文件之间切换

QtQuick QML。无法将属性分配给使用 Loader 加载的对象

QT Creator - 如何实现GUI Creator对组件的访问?

qt - 如何让文字填满QLabel的所有空间?

android - 使用不透明蒙版时图像的自动变换失败