将 Python 字符串转换为 Latex 公式

Convert Python String to Latex Formula

我确实尝试使用 Sympy 将包含数学方程式的字符串转换为 Latex 代码并将这些方程式显示为图像。

例如,我确实尝试在以下平台上使用 Sympy:

K(Y) = M * X + B 

这在 Sympy 中不起作用。 (至少对我来说) 这将在 Sympy 中工作。 (至少对我而言)

M*X + B

也许有人知道如何更改以下内容以成功地将我的方程式嵌入到 GUI 中:

import random
import os
import pikepdf
import fitz  # PyMuPDF, imported as fitz for backward compatibility reasons
from kivymd.uix.label import MDLabel
import sympy as syp
from sympy import *
from sympy.abc import _clash1
from functools import partial

import matplotlib.pyplot as plt
import matplotlib.pyplot as plt
import io
from kivy.uix.image import Image
from kivy.graphics.context_instructions import Color
from kivy.graphics.vertex_instructions import Rectangle
from kivy.properties import StringProperty, Clock
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.image import Image
from kivy.uix.widget import Widget
from PIL import Image, ImageChops
from io import BytesIO as StringIO

import matplotlib.pyplot as plt

    b = ["Lineare Beispielfunktion"]
    a = ["K ( X) =  M * X + B  ", 1, 5]
    Gleichung = a[0]
    Gleichung = latex(sympify(Gleichung))
    
        def render_latex(formula, fontsize=12, dpi=3000, format_='svg'):
            """Renders LaTeX formula into image.
            """
            fig = plt.figure(figsize=(0.01, 0.01))
            fig.text(0, 0, u'${}$'.format(formula), fontsize=fontsize)
            buffer_ = StringIO()
            fig.savefig(buffer_, dpi=dpi, transparent=True, format=format_, bbox_inches='tight', 
            pad_inches=0.0)
            plt.close(fig)
            return buffer_.getvalue()
    
    
    image_bytes = render_latex(Gleichung,fontsize=80, dpi=200, format_='jpg')
        with open('Image_toDisplay', 'wb') as image_file:
            image_file.write(image_bytes)

我获得了从 Whosebug 生成 der Image 的功能(现在无法在 Whosebug 上找到源代码), 但是你可以在这里找到它(感谢帮助添加源): on Github by tonyseek 我的问题是我使用 Sympy 的方式。显然我确实以错误的方式使用它。 欢迎任何建议。

好的,我确实尝试了一些不太好但对我有用的东西我会勾勒出概念并在之后显示代码:

  1. 在“=”上拆分字符串 a) 使用 (import re) 和:re.split('=', Gleichung)

  2. 列表元素[0]是“=”之前的部分列表元素[1]是“=”之后的部分

  3. 使用 Sympy 为每个元素渲染 Latex 代码

  4. 通过'='加入新字符串(乳胶代码字符串)

  5. 将这个新字符串赋给显示的函数

    Gleichung = a[0]
    Gleichung_split = re.split('=', Gleichung)
    Gleichung_back = Gleichung_split [1]
    Gleichung_front = Gleichung_split [0]
    Gleichung_front = latex(sympify(Gleichung_front))
    Gleichung_back = latex(sympify(Gleichung_back))
    
    Gleichung_split [0]= Gleichung_front
    Gleichung_split [1] = Gleichung_back
    s = "="
    Gleichung_print = s.join(Gleichung_split )
    image_bytes = render_latex(Gleichung_print ,fontsize=80, dpi=200, 
    format_='jpg')
    with open('Image_toDisplay', 'wb') as image_file:
        image_file.write(image_bytes)
    

附加信息:Gleichung 是方程式的德语。如果有什么我应该改变或更 pythinic 的方式来做到这一点,请随时贡献。 还有一件重要的事情:我从 Stack Overflow 获得的 render to latex 函数,如果你知道源代码给我一个提示,我想 link 这成为我的问题。