自定义SymPy函数生成平方形式LaTeX时触发TypeError错误求助
自定义SymPy函数LaTeX输出时TypeError问题分析
问题重现
自定义SymPy函数以实现特殊LaTeX输出,简化代码如下:
from sympy import Function, Symbol, latex class TestClass(Function): def _latex(self, printer): m = self.args[0] _m = printer._print(m) return _m + '(x)' S = Symbol('S') latex(TestClass(S)**2)
执行代码时触发错误:
TypeError: TestClass._latex() got an unexpected keyword argument 'exp'
原因分析
SymPy在处理带有指数(如**2)这类修饰的表达式时,会向_latex方法传递额外的关键字参数(本例中为exp)。但你定义的_latex方法仅声明了printer一个参数,无法接收这些额外参数,因此抛出TypeError。
SymPy官方要求自定义函数的_latex方法需兼容任意关键字参数,以适配不同场景下的调用需求。
解决方法
修改_latex方法的签名,添加**kwargs参数以接收额外关键字参数:
from sympy import Function, Symbol, latex class TestClass(Function): def _latex(self, printer, **kwargs): m = self.args[0] _m = printer._print(m) return _m + '(x)' S = Symbol('S') print(latex(TestClass(S)**2)) # 输出: \left(S(x)\right)^{2}
内容的提问来源于stack exchange,提问作者Michael Gfrerer
相关产品推荐
相关产品推荐

