如何在Jupyter中实现多个公式与符号并排渲染
Jupyter 环境下 SymPy 多公式同行渲染方案
常见使用痛点
- 调用
IPython.display模块的display()函数渲染SymPy公式时,默认单元素占一行,多个元素连续调用会被强制拆分为多行展示 - 直接用Python内置
print()函数输出SymPy对象时,LaTeX排版格式会完全丢失,只能输出纯文本形式的公式,可读性差 - 公开网络资料中很少有针对多元素同行渲染场景的简便实现,自行调试拼接LaTeX的成本较高
开箱即用的实现函数
核心思路是把所有需要同行展示的内容统一转为LaTeX片段,拼接成单个Math对象后一次性交给display渲染,从根源避免多次调用display触发的自动换行:
from IPython.display import display, Math import sympy def display_inline(*content, use_inline_math=False): """ 同一行渲染多个SymPy公式、文本内容 :param content: 按传入顺序渲染,支持SymPy表达式、手写LaTeX字符串、普通文本 :param use_inline_math: 设为True时使用行内公式样式,默认块级公式加标准quad间距 """ split_str = " \quad " if not use_inline_math else " " latex_segments = [] for item in content: if isinstance(item, str): latex_segments.append(item) else: latex_segments.append(sympy.latex(item)) display(Math(split_str.join(latex_segments)))
使用示例
按顺序把需要展示的内容传入函数即可,SymPy对象会自动转成标准LaTeX格式,普通文本会原样保留:
x = sympy.symbols('x') expr1 = sympy.Derivative(sympy.sin(x)*sympy.exp(x), x) expr2 = sympy.diff(sympy.sin(x)*sympy.exp(x), x) # 同一行展示导数表达式和计算结果 display_inline("函数求导:", expr1, " = ", expr2)
执行后所有内容会在同一行完成LaTeX渲染,不会出现换行、格式错乱的问题。
内容的提问来源于stack exchange,提问作者Dara O h
相关产品推荐
相关产品推荐

