You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Jupyter Notebook中Sympy长表达式输出支持水平滚动?

实现Sympy长表达式在Jupyter Notebook中水平滚动显示

当然可行!我之前处理复杂符号表达式时也碰到过这个糟心的问题——垂直滚动把Sympy精心排版的结构拆得支离破碎,非得上下翻半天才能看全表达式。换成水平滚动就完美解决了,下面分享两种实用的方法:

方法1:基于LaTeX渲染的优雅方案

Sympy的表达式可以导出为LaTeX格式,结合Jupyter的HTML渲染能力,我们可以把LaTeX内容包裹在带水平滚动样式的容器里,既能保留美观的数学排版,又支持横向滚动:

from sympy import symbols, expand, latex
from IPython.display import HTML

# 生成一个超长的测试表达式
x = symbols('x')
long_expression = expand((x + 1)**20)

# 用带水平滚动的div包裹LaTeX表达式
HTML(f'<div style="overflow-x: auto; padding: 10px;"><inline_LaTeX_Formula>{latex(long_expression)}<\inline_LaTeX_Formula></div>')

这种方法的优势是渲染效果和学术文档一致,表达式结构清晰,不会因为换行变形。

方法2:保留Sympy ASCII排版的方案

如果你更偏好Sympy原生的ASCII艺术式排版,我们可以把pretty()生成的文本捕获到字符串,再用<pre>标签保留格式,配合水平滚动容器:

from sympy import symbols, expand, pretty
from IPython.display import HTML

x = symbols('x')
long_expression = expand((x + 1)**20)

# 获取ASCII格式的表达式字符串
pretty_output = pretty(long_expression)

# 包裹在带水平滚动的div中,pre标签确保排版不丢失
HTML(f'<div style="overflow-x: auto;"><pre>{pretty_output}</pre></div>')

<pre>标签会严格保留原文本的空格和换行,加上overflow-x: auto后,过长的内容只会触发横向滚动,垂直方向会自适应表达式的高度,彻底避免排版杂乱的问题。

两种方法都能完美替代默认的垂直滚动,你可以根据自己的排版偏好选择~

内容的提问来源于stack exchange,提问作者Safwan Ahmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:40:23