我正在使用MathTextParser
来描述Qt中的一些方程。因此,我从dict中获取所需的tex字符串,使用我创建的解析器的to_rgba方法解析它(交出一个通用的fontsize和dpi),最后通过figimage
将它交给我的FigureCanvas
of QWidget
。
看一下:
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()
我现在的问题是,要解析的方程具有不同的长度,而FigureCanvas
有固定的大小(正如它所需要的那样),这样就会产生一个图像,它的大小超过了图形的大小,因此方程的某些部分被切断/不可见,如本例所示:
截断方程
我不想做的是为每个tex字符串的长度预先定义一个fontsize,因为即使是用户定义的方程(不可预测的长度)也需要被解析和显示。
那么,是否有可能使解析器与例如fontsize相匹配,从而使输出成为一个固定大小的网格化tex,而不依赖于等式大小/长度?
此外:与numpy/scipy相比,matplotlib的文档对我来说似乎是莫名其妙的,因此,如果有人能够评论to_rgba
和figimage
的确切工作方式,我也会很感激。关于to_rgba:下面的引文说明深度是什么意思?
提前感谢
发布于 2013-06-03 13:18:09
显示TeX代码的另一种可能的解决方案:调用latex
获取dvi文件,然后调用dvisvgm --no-fonts
将dvi文件转换为SVG,然后用QSvgRenderer:在python中将乳胶码转换为mathml或svg代码加载并呈现SVG文件。
https://stackoverflow.com/questions/13213832
复制相似问题