SymPy能否为GUI渲染LaTeX?
我希望用PyQt制作一个应用程序,能够显示用户输入的方程。我之前考虑过使用matplotlib,但觉得这有点大材小用,因为我只是想用它来渲染latex格式的内容。
反正我需要用到SymPy,所以我希望能找到一种方法,利用它来进行渲染,最好是能生成一个SVG文件,方便PyQt使用。
希望这样说清楚了,非常感谢任何帮助或建议。
祝好,
Geddes
3 个回答
你可以使用Qt库中的Markdown编辑器示例,并把KaTeX链接到你的HTML模板中。这样就能快速显示数学公式!然后你可以截取QWebView小部件的屏幕,转换成SVG或PNG格式。
我还没弄明白怎么把KaTeX渲染成一个SVG 文件。 也许你可以直接获取已经渲染好的HTML,它的格式已经调整好了。我也不太清楚。如果需要更多帮助,可以在这里评论或者在下面GitHub链接的讨论区提问。
https://github.com/enjoysmath/Marked-KaTeX-example-cpp
这个例子甚至让你可以编辑Markdown / KaTeX内容!他们使用了一种叫做QWebChannel的东西。我不太清楚它是怎么工作的,也不知道为什么需要它,但如果你想在网页浏览器和你的Qt应用之间进行通信,这就是正确的方法。
你需要通过Qt维护工具安装QWebEngineWidgets / Qt定位 / 任何与网页相关的库。
这个例子肯定可以转换成PyQt5,但我还没尝试过。转换起来不会太难,因为JavaScript文件qwebchannel.js是完全一样的。
你可以使用SymPy来输出MathML,然后再用SVGMath把它转换成SVG格式。
如果你只是想用Python简单地显示一些内容,可以试试ipython 0.11和qtconsole,使用sympy配置(命令是ipython qtconsole --profile=sympy)。这个工具实现了matplotlib,但我觉得它很干净,因为可以直接在qtconsole上显示数学表达式。不过,你需要先安装pyzmq这个模块。