Для этого нет встроенной опции, но вы можете создать подкласс LatexPrinter и переопределить его метод _print_dict
, чтобы сделать все, что вы хотите, например:
from sympy.printing.latex import LatexPrinter
class MyPrinter(LatexPrinter):
def _print_dict(self, d):
keys = sorted(d.keys(), key=default_sort_key)
items = []
for key in keys:
val = d[key]
items.append("%s & = %s" % (self._print(key), self._print(val)))
return r"\begin{align} %s \end{align}" % r", \\ ".join(items)
Пример использования:
mydict = {'a': 1, 'b': 2}
print(MyPrinter().doprint(mydict)) # \begin{align} a & = 1, \\ b & = 2 \end{align}
Функция latex
является просто ярлыком для LatexPrinter(settings).doprint(expr)
, вы можете переопределить ее соответствующим образом:
latex = lambda expr, **settings: MyPrinter(settings).doprint(expr)
чтобы у latex
было новое поведение.
Говоря о настройках, можно также ввести настройку для этого, чтобы были доступны оба метода печати; но на этом этапе, вероятно, лучше добавить проблему и PR в SymPy repo .