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

如何在Shiny for Python中渲染LaTeX公式及寻找简便替代方案?

在Shiny for Python中渲染LaTeX公式的方案

Shiny for Python本身没有内置LaTeX渲染支持,你之前用render.text的方式行不通,因为它只会输出纯文本,浏览器不会解析其中的LaTeX语法。以下是两种可行的实现方式:

方法1:结合MathJax与render.ui

MathJax是常用的LaTeX渲染库,只需引入其CDN脚本,再用render.ui输出包含LaTeX的HTML内容即可:

from shiny.express import input, render, ui

# 引入MathJax脚本,让浏览器能解析LaTeX
ui.tags.script(src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js")

@render.ui
def latex_equation():
    # 用$$包裹LaTeX表达式(MathJax的块级渲染语法)
    eq = r"$$3 \times 3 + 3 - 3 = 9$$"
    return ui.HTML(eq)

方法2:用KaTeX实现轻量渲染

KaTeX比MathJax体积更小、渲染速度更快,适合对性能有要求的场景:

from shiny.express import input, render, ui

# 引入KaTeX的样式和核心脚本
ui.tags.link(rel="stylesheet", href="https://cdn.jsdelivr.net/npm/katex@0.16.8/dist/katex.min.css")
ui.tags.script(src="https://cdn.jsdelivr.net/npm/katex@0.16.8/dist/katex.min.js")
# 引入自动渲染脚本,无需手动调用渲染函数
ui.tags.script(src="https://cdn.jsdelivr.net/npm/katex@0.16.8/dist/contrib/auto-render.min.js")

# 初始化KaTeX的自动渲染规则
ui.tags.script("""
document.addEventListener("DOMContentLoaded", function() {
    renderMathInElement(document.body, {
        delimiters: [
            {left: "$$", right: "$$", display: true},
            {left: "$", right: "$", display: false}
        ]
    });
});
""")

@render.ui
def latex_equation():
    eq = r"$$3 \times 3 + 3 - 3 = 9$$"
    return ui.HTML(eq)

关键说明

  • 不要用render.text返回LaTeX字符串,必须用render.ui配合ui.HTML(),这样Shiny才会把内容当作HTML而非纯文本处理。
  • 必须引入MathJax或KaTeX的外部资源,浏览器本身不支持直接解析LaTeX。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:57:17