21

I have a long Sympy expression that I'd like to get printed with a horizontal scrollbar beneath it. Is it possible to do so in Jupyter? I'm able to toggle vertical scrolling but I want it to be horizontally scrollable instead. The problem with vertical scrolling is that the output of sympy.pretty_print() gets badly distorted in my case. The output also looks ugly and the user has to scroll through the whole output unnecessarily.enter image description here

Safwan Ahmad
  • 373
  • 1
  • 3
  • 9

3 Answers3

22

Something similar to the np.set_printoptions(linewidth=some_large_number) and/or np.set_printoptions(threshold=some_large_number) approach can be useful but doesn't fix the problem if Jupyter's output window is itself too narrow.

The quickest solution I ended up with is inserting this line somewhere at the top of your notebook:

from IPython.display import display, HTML
display(HTML("<style>pre { white-space: pre !important; }</style>"))

If you want to change this setting for all of your notebooks, you'll need to mess around with the custom.css config file for Jupyter as discussed here.

I wasted too much time figuring this out. Hopefully I can help some of you figure it out quicker!

Karim Sonbol
  • 2,502
  • 1
  • 16
  • 16
Eric Le Fort
  • 2,346
  • 14
  • 23
1

Iterating on Eric's response slightly, here's a self-contained version that only creates horizontally-scrolling outputs when you want it to, rather than enabling it notebook-wide:

from IPython.display import display, HTML
from pprint import pformat
def boxprint(*args):
    for arg in args:
        display(HTML('<pre style="white-space: pre !important;">{}</pre>'.format(pformat(arg))))
Max
  • 1,064
  • 17
  • 10
0

On hovering right below

out[]:

in notebook you see "scroll output" . On clicking anywhere in that area you get your output scrollable both horizontally and vertically.

Krishna
  • 4,370
  • 2
  • 26
  • 37