MathTextParser:将输出拟合到figsize

时间:2012-11-03 21:48:36

标签: python qt matplotlib figure

我使用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的文档由于某些原因似乎对我来说难以理解,因此,如果有人可以评论FigureCanvasto_rgba如何正确工作,我也会感激...关于to_rgba:以下引用阐明深度是什么意思?:

  
      
  • depth是基线与图像底部的偏移量,以像素为单位
  •   

提前致谢

1 个答案:

答案 0 :(得分:0)

显示TeX代码的另一种可能解决方案:调用latex获取dvi文件,然后调用dvisvgm --no-fonts将dvi文件转换为SVG,然后使用QSvgRenderer加载并呈现SVG文件: converting a latex code to mathml or svg code in python