首页 > 解决方案 > SymPy中索引变量的奇怪打印

问题描述

我试图弄清楚如何在 SymPy 中打印索引变量以使其看起来比下面更干净。由于某种原因,我无法使用 Mathjax,所以我很抱歉只有一张照片可以使用。

import sympy
from sympy import *
init_printing(use_latex='mathjax')
S = IndexedBase('S')
i,j,t = Idx('i'),Idx('j'),Idx('t')
S[i]

在此处输入图像描述

标签: sympy

解决方案


正如我之前的评论所述,现有的乳胶打印机目前不支持它。

但是,您可以手动实现_latex(self, expr)for Idx,或使用自定义打印机

from sympy import *
from sympy.printing.latex import LatexPrinter

class CustomLatexPrinter(LatexPrinter):
    def _print_Idx(self, expr):
        return expr.name

    @classmethod
    def printer(cls, expr, **kwargs):
        return cls(kwargs).doprint(expr)

init_printing(use_latex='mathjax', latex_printer=CustomLatexPrinter.printer)

我在这里所做的只是简单地实现_print_Idx将标签作为字符串通过name属性)返回,并提供一个打印机函数来匹配init_printinglatex_printer.

然后,按照你的例子

在此处输入图像描述


推荐阅读