Qt 在QML中嵌入乳胶的可能性 我在QML(用C++后端)做演示系统,类似于./P>

Qt 在QML中嵌入乳胶的可能性 我在QML(用C++后端)做演示系统,类似于./P>,qt,latex,qml,text-rendering,Qt,Latex,Qml,Text Rendering,我希望能够包含一些Latex代码来显示一些数学(只需要最基本的Latex功能,比如求和、分数、超级和Subscript以及数学字体) 我认为这样做的可能性如下: 使用latex2e: 将Latex代码编译为DVI文档(使用Latex) 将DVI转换为SVG(使用dvisvgm) 使用QML(也支持SVG)中的图像显示 使用MathJax: 将Latex代码封装在一个小HTML文件中,并包含MathJax JS库 使用QML的WebKit显示此项 自定义解决方案(C++): 编写或包

我希望能够包含一些Latex代码来显示一些数学(只需要最基本的Latex功能,比如求和、分数、超级和Subscript以及数学字体)

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

  • 使用latex2e:
  • 将Latex代码编译为DVI文档(使用
    Latex
  • 将DVI转换为SVG(使用
    dvisvgm
  • 使用QML(也支持SVG)中的
    图像显示
  • 使用MathJax:
  • 将Latex代码封装在一个小HTML文件中,并包含MathJax JS库
  • 使用QML的
    WebKit
    显示此项
  • 自定义解决方案(C++):
  • 编写或包含现有的最小Latex数学解析器
  • 使用自定义绘制编写一个
    QDeclarativeItem
还有别的解决办法我看不出来吗?我更喜欢第一个解决方案,因为第二个听起来太重,第三个太难

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

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

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


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

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

听起来你需要让公式与一些文本段落保持一致,所以出于这个原因,我认为选项2是一个很好的方法

使用WebKit组件并不困难。我不知道你说的“太重”是什么意思


干杯

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

我很想知道您采用了哪种方式,以及它是否符合您的目的,因为我们也遇到了这个问题。我使用了方法1。为了将渲染图像嵌入段落(内联),我将每个段落的文本拆分为单个单词,并使用自定义流布局算法手动放置它们。然后可以手动定位图像。如果我有时间的话,我会用足够的细节来回答这个问题。顺便说一句,SVG不太好用,我使用了光栅化PNG格式。在缩放图像时,我的应用程序可以重新调整渲染分辨率(即重新转换图像),因此你几乎不会注意到它是光栅化图像。我尝试了这种方法,但问题是图像始终在基线处垂直对齐。如果图像是带有子集字母或类似内容的latex公式(应该低于基线),则不起作用。