Странная печать в SymPy для индексированных переменных - PullRequest
1 голос
/ 28 апреля 2020

Я пытаюсь выяснить, как можно распечатать индексированную переменную в 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]

enter image description here

1 Ответ

1 голос
/ 30 апреля 2020

Как говорится в моем предыдущем комментарии, в настоящее время он не поддерживается в существующем латексном принтере.

Однако, вы можете вручную реализовать _latex(self, expr) для 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_printing требует для latex_printer.

Затем, следуя вашему примеру

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...