[英]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.