Jupyter 丰富表示的优先顺序是什么?

What is the precedence order of Jupyter rich representations?

要在 Jupyter notebook 中显示 Python 对象,可以定义 _repr_svg_、_repr_html_ 等方法... return 该对象的格式化表示,如此处所述。

http://ipython.readthedocs.io/en/stable/config/integrating.html#rich-display

此外,如此处所述:

https://nbviewer.jupyter.org/github/ipython/ipython/blob/master/examples/IPython%20Kernel/Rich%20Output.ipynb

In general the Notebook will use the richest available representation.

但是,我无法在任何地方找到这些表示的确切优先顺序,而且我不确定相应的代码是否存在于 IPython、笔记本或其他内容中。谁能澄清一下?

所有可用的表示都将被计算并发送到前端并存储在笔记本文档中。每个前端将从可用的内容中选择它最喜欢的。不同的前端会有不同的偏好(例如,live notebook 更喜欢 javascript 和 html,而 nbconvert -> pdf via latex 更喜欢 pdf 数字)。一些前端甚至可以配置为具有不同的偏好。笔记本应用程序中的默认显示顺序定义为 here:

  • application/javascript
  • text/html
  • text/markdown
  • text/latex
  • image/svg+xml
  • image/png
  • image/jpeg
  • application/pdf
  • text/plain