我使用MathTextParser
来描述Qt中的一些方程式。因此,我从dict中获取所需的tex字符串,使用我创建的解析器的to_rgba方法解析它(移交一般的fontsize和dpi),最后将其交给我FigureCanvas
的{{1}}按QWidget
。
看看:
figimage
我现在的问题是,要解析的方程具有不同的长度,而class MathWidget(QWidget):
def __init__(self, parent = None):
QWidget.__init__(self, parent)
...
self.canvas = MathCanvas() # The FigureCanvas to display the teximage
...
self.parser = mathtext.MathTextParser("Bitmap")
def render(self,metric):
equation = self.equations[metric]
rgb, d = self.parser.to_rgba(equation, color='black', fontsize=8, dpi=200)
self.canvas.fig.figimage(rgb.astype(float)/255., 0, 0)
self.canvas.draw()
具有固定的大小(因为它需要),以便它发生,一些方程导致图像,超出其大小的数字,以便方程的某些部分被切断/不可见,如本例所示:
Cut off equation
我不想做的是以某种方式预定义每个tex字符串的字体大小,这取决于它的长度,因为甚至用户定义的方程(不可预测的长度)需要被解析和显示。
那么有没有办法使解析器适合例如fontsize,以便输出是一个固定大小的光栅化tex,与方程大小/长度无关?
此外:与例如numpy / scipy matplotlib的文档由于某些原因似乎对我来说难以理解,因此,如果有人可以评论FigureCanvas
和to_rgba
如何正确工作,我也会感激...关于to_rgba:以下引用阐明深度是什么意思?:
- depth是基线与图像底部的偏移量,以像素为单位
提前致谢
答案 0 :(得分:0)
显示TeX代码的另一种可能解决方案:调用latex
获取dvi文件,然后调用dvisvgm --no-fonts
将dvi文件转换为SVG,然后使用QSvgRenderer加载并呈现SVG文件:
converting a latex code to mathml or svg code in python