gpt4 book ai didi

python - 对齐的 LaTeX 方程 SymPy

转载 作者:行者123 更新时间:2023-11-28 18:10:09 26 4
gpt4 key购买 nike

SymPy 会像这样在 dict 中漂亮地打印表达式:

>>> latex(dict(a=1, b=2))
'\\left \\{ a : 1, \\quad b : 2\\right \\}'

相反,我想使用 align 环境来跨行拆分我的表达式,输出如下:

\begin{align}
a & = 1 \\
b & = 2 \\
\end{align}

SymPy 可以为我做这个吗?

最佳答案

对此没有内置选项,但您可以将 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 .

关于python - 对齐的 LaTeX 方程 SymPy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51173920/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com