我正在编写用于Jupyter笔记本的python类,这些类应该有漂亮的表示形式。为此,我定义了_repr_html_
方法(可以由matplotlib
动态生成embed graphics)。但有时我也想包括数学。比如说,
import pandas as pd
import IPython.display as idisp
class FooHtml:
def __init__(self):
self.df = pd.DataFrame({'alpha': [1.0, 2, 3], 'beta': [0.1, 0.2, 0.3]})
def _repr_html_(self):
math = idisp.Math(r'\alpha = \int f(\tau)\,d\tau')
return (
'<h3>FooHtml</h3>'
f'{self.df._repr_html_()}<br>\n'
f'Explanation: {math}, where tau is the time.'
)
FooHtml()
此单元格输入将生成以下输出:
虽然display(math)
显示了一个等式,但这并没有显示数学:
不呈现是因为str(math) == '<IPython.core.display ...>'
将被解释为无效的HTML标记。问题是:如何实际呈现嵌入HTML表示中的数学。我找到了答案,但我在任何地方都找不到;我会把它贴出来作为答案
由
_repr_html_
返回的HTML字符串可能在$$ ... $$
和$ ... $
字符串中包含LaTeX格式的数学。虽然没有从_repr_html_
的输出中解析其他标记格式,但实际解析了$
分隔的数学:输出:
或者,您可以创建一个
_repr_markdown_
方法。虽然DataFrame._repr_markdown_
不存在,但可以在标记中嵌入HTML表:这正是促使我创建jupydoc的原因,它还使用标记来统一图形、格式化文本和文本
有了机器,答案很简单:
导致:
相关问题 更多 >
编程相关推荐