6

我正在做一个类似于这个的 QML(带有 C++ 后端)的演示系统。

我希望能够包含一些 Latex 代码来显示一些数学(只需要最低的 Latex 功能,例如总和、分数、超级和子带以及数学字体)。

我看到以下可能性:

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

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

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

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

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

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

4

2 回答 2

3

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

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

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

干杯!

于 2012-11-29T18:36:12.533 回答
0

另一种选择是使用富文本 QML 组件,它也支持图像(例如 TextEdit)而不是图像 - 然后您可以将它们与普通文本内联。

于 2014-06-22T04:51:55.000 回答