在 LaTeX 字符串中显示天体数量

Display an astropy Quantity within a LaTeX string

我正在寻找一种方法来在 IPython 笔记本中的 LaTeX 字符串中呈现 astropy 变量。例如,给定一个简单的前提,

from astropy.constants import c
import astropy.units as u
from astropy import log

光速默认精美渲染为:

只需在 ipython 提示符中输入即可。现在,如果我想将其嵌入到字符串中怎么办?如何跳上 astropy 已经使用的相同渲染火车来打印示例字符串,如 'Speed limit: {}'.format(c)?

到目前为止我尝试过的所有方法,包括 LaTeX 格式字符串的变体,都只显示 ASCII 字符串作为输出:

可能有更优雅的解决方案,但这个可行:

# Science
import numpy as np
from astropy.units import Unit

# Notebook
from IPython.display import Markdown
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

# Handy functions
def Qshow(Q, sigfig=2, unit=None, name=None):
    name = Q.info.name
    if unit is not None:
        Q = Q.to(unit)
    if sigfig is not None:
        q = Q.round(sigfig - int(np.log10(Q.value)))
    else:
        q = Q
    if name is not None:
        output = Markdown(f'{name} = {q._repr_latex_()}')
    else:
        output = Markdown(f'{q._repr_latex_()}')
    return output

# Parameter
density = 1.23456e12 * Unit('g/cm^3')
density.info.name = r'$\rho$'

# Results
Qshow(density)

请参阅 this gist 了解最新版本。