在Sympy中,是否可以修改使用latex()输出函数派生的方式?默认是非常麻烦的.这个:
f = Function("f")(x,t)
print latex(f.diff(x,x))
将输出
\frac{\partial^{2}}{\partial x^{2}} f{\left (x,t \right )}
这是非常冗长的.如果我喜欢像
f_{xx}
有没有办法强迫这种行为?
最佳答案
您可以继承LatexPrinter并定义自己的_print_Derivative. Here是当前的实现.
也许是这样的
from sympy import Symbol
from sympy.printing.latex import LatexPrinter
from sympy.core.function import UndefinedFunction
class MyLatexPrinter(LatexPrinter):
def _print_Derivative(self,expr):
# Only print the shortened way for functions of symbols
function,*vars = expr.args
if not isinstance(type(function),UndefinedFunction) or not all(isinstance(i,Symbol) for i in vars):
return super()._print_Derivative(expr)
return r'%s_{%s}' % (self._print(Symbol(function.func.__name__)),' '.join([self._print(i) for i in vars]))
哪个像
>>> MyLatexPrinter().doprint(f(x,y).diff(x,y))
'f_{x y}'
>>> MyLatexPrinter().doprint(Derivative(x,x))
'\\frac{d}{d x} x'
要在Jupyter笔记本中使用它,请使用
init_printing(latex_printer=MyLatexPrinter().doprint)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。