import sympy | |
GREEK_LETTER_MAP = { | |
# Alpha | |
'α': 'alpha', | |
'\\alpha': 'alpha', | |
'\\char000391': 'alpha', | |
# Beta | |
'β': 'beta', | |
'\\beta': 'beta', | |
'\\char000392': 'beta', | |
# Gamma | |
'γ': 'gamma', | |
'\\gamma': 'gamma', | |
'Γ': 'Gamma', | |
'\\Gamma': 'Gamma', | |
# Delta | |
'δ': 'delta', | |
'\\delta': 'delta', | |
'Δ': 'Delta', | |
'\\Delta': 'Delta', | |
# Epsilon | |
'ε': 'epsilon', | |
'\\epsilon': 'epsilon', | |
'\\char000190': 'epsilon', | |
'ϵ': 'varepsilon', | |
'\\varepsilon': 'varepsilon', | |
# Zeta | |
'ζ': 'zeta', | |
'\\zeta': 'zeta', | |
'\\char000396': 'zeta', | |
# Eta | |
'η': 'eta', | |
'\\eta': 'eta', | |
'\\char000397': 'eta', | |
# Theta | |
'θ': 'theta', | |
'\\theta': 'theta', | |
'Θ': 'Theta', | |
'\\Theta': 'Theta', | |
'ϑ': 'vartheta', | |
'\\vartheta': 'vartheta', | |
# Iota | |
'ι': 'iota', | |
'\\iota': 'iota', | |
'\\char000399': 'iota', | |
# Kappa | |
'κ': 'kappa', | |
'\\kappa': 'kappa', | |
'\\char00039A': 'kappa', | |
# Lambda | |
'λ': 'lambda', | |
'\\lambda': 'lambda', | |
'Λ': 'Lambda', | |
'\\Lambda': 'Lambda', | |
# Mu | |
'μ': 'mu', | |
'\\mu': 'mu', | |
'\\char00039C': 'mu', | |
# Nu | |
'ν': 'nu', | |
'\\nu': 'nu', | |
'\\char00039D': 'nu', | |
# Xi | |
'ξ': 'xi', | |
'\\xi': 'xi', | |
'Ξ': 'Xi', | |
'\\Xi': 'Xi', | |
# Omicron | |
'ο': 'omicron', | |
'\\omicron': 'omicron', | |
'\\char00039F': 'omicron', | |
# Pi | |
'π': 'pi', | |
'\\pi': 'pi', | |
'Π': 'Pi', | |
'\\Pi': 'Pi', | |
'ϖ': 'varpi', | |
'\\varpi': 'varpi', | |
# Rho | |
'ρ': 'rho', | |
'\\rho': 'rho', | |
'\\char0003A1': 'rho', | |
'ϱ': 'varrho', | |
'\\varrho': 'varrho', | |
# Sigma | |
'σ': 'sigma', | |
'\\sigma': 'sigma', | |
'Σ': 'Sigma', | |
'\\Sigma': 'Sigma', | |
'ς': 'varsigma', | |
'\\varsigma': 'varsigma', | |
# Tau | |
'τ': 'tau', | |
'\\tau': 'tau', | |
'\\char0003A4': 'tau', | |
# Upsilon | |
'υ': 'upsilon', | |
'\\upsilon': 'upsilon', | |
'Υ': 'Upsilon', | |
'\\Upsilon': 'Upsilon', | |
# Phi | |
'φ': 'phi', | |
'\\phi': 'phi', | |
'Φ': 'Phi', | |
'\\Phi': 'Phi', | |
'ϕ': 'varphi', | |
'\\varphi': 'varphi', | |
# Chi | |
'χ': 'chi', | |
'\\chi': 'chi', | |
'\\char0003A7': 'chi', | |
# Psi | |
'ψ': 'psi', | |
'\\psi': 'psi', | |
'Ψ': 'Psi', | |
'\\Psi': 'Psi', | |
# Omega | |
'ω': 'omega', | |
'\\omega': 'omega', | |
'Ω': 'Omega', | |
'\\Omega': 'Omega' | |
} | |
sympy_singleton_map = { | |
'pi': sympy.S.Pi, | |
} | |
def get_symbol(latex_str: str, is_real: bool | None = True, lowercase_symbols: bool = False): | |
latex_str = latex_str.strip() | |
letter = GREEK_LETTER_MAP.get(latex_str.replace('"', '')) | |
if letter is None: | |
letter = latex_str | |
if letter.startswith('\\'): | |
letter = letter[1:] | |
if lowercase_symbols: | |
letter = letter.lower() | |
if letter in sympy_singleton_map: | |
return sympy_singleton_map[letter] | |
else: | |
return sympy.Symbol(letter, real=is_real) |