簡體   English   中英

對齊的LaTeX方程SymPy

[英]Aligned LaTeX equations SymPy

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有新的行為。

說到設置,還可以為此設置一個設置,以便兩種打印方法都可用; 但在那個階段,向SymPy回購添加問題和PR可能更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM