in src/latex2sympy2_extended/latex2sympy2.py [0:0]
def convert_atom(self, atom):
if atom.atom_expr():
return self.convert_atom_expr(atom.atom_expr())
elif atom.SYMBOL():
s = atom.SYMBOL().getText().replace("\\$", "").replace("\\%", "")
if s == "\\infty":
return sympy.oo
else:
raise Exception("Unrecognized symbol")
elif atom.number_subexpr():
# We just ignore the subexpr right now
s = atom.number_subexpr().NUMBER().getText()
number = self.parse_number(s)
return number
elif atom.E_NOTATION():
s = atom.E_NOTATION().getText()
return self.parse_number(s)
elif atom.E_NOTATION_E():
return self.create_symbol('E')
elif atom.DIFFERENTIAL():
diff_var = self.get_differential_var(atom.DIFFERENTIAL())
return sympy.Symbol('d' + diff_var.name, real=self.is_real)
elif atom.VARIABLE():
text = atom.VARIABLE().getText()
is_percent = text.endswith("\\%")
trim_amount = 3 if is_percent else 1
atom_text = text[10:]
atom_text = atom_text[0:len(atom_text) - trim_amount]
# Hynek: I don't think we want this to happen
# replace the variable for already known variable values
# if atom_text in self.var:
# symbol = self.var[atom_text]
# else:
symbol = self.create_symbol(atom_text)
if is_percent:
return convert_to_pct(symbol)
# return the symbol
return symbol
elif atom.PERCENT_NUMBER():
text = atom.PERCENT_NUMBER().getText().replace("\\%", "").replace("%", "").replace(",", "")
number = self.parse_number(text)
percent = sympy.Mul(number, Rational(1, 100), evaluate=False)
return percent