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

使用Furo主题时Sphinx toctree条目数学表达式无法渲染

Sphinx + Furo主题中toctree内:math:角色无法生效的解决办法

问题描述

使用Sphinx搭配Furo主题编写文档时,index.rst的toctree列表项中直接使用:math:角色无法被正确解析,示例代码如下:

第一种写法:

.. toctree::
   :maxdepth: 4
  
   Bounds for :math:`|\zeta(s)|` <Art06.rst>
   Size of :math:`L(1,\chi)` <Art07.rst>

第二种写法(仅指定文件名,依赖目标文件标题):

.. toctree::
   :maxdepth: 4
  
   Art06.rst
   Size of :math:`L(1,\chi)` <Art07.rst>

其中Art06.rst的标题为:

Bounds for :math:`|\zeta(s)|`
=============================

以上两种方式均无法正常渲染:math:角色。

核心原因

toctree的列表项文本默认被当作纯文本处理,不会解析reStructuredText的角色语法(包括:math:),因此直接写入的公式会原样显示而非渲染。

解决步骤

1. 定义文本替换标签

在index.rst的toctree代码块之前,添加reStructuredText的替换定义,将包含公式的标题封装为标签:

.. |zeta-bound-title| replace:: Bounds for :math:`|\zeta(s)|`
.. |L-function-title| replace:: Size of :math:`L(1,\chi)`

2. 在toctree中使用替换标签

修改toctree代码,用替换标签替代原有的文本内容:

.. toctree::
   :maxdepth: 4
  
   |zeta-bound-title| <Art06.rst>
   |L-function-title| <Art07.rst>

3. 确认MathJax扩展已启用

打开项目的conf.py配置文件,确保extensions列表中包含sphinx.ext.mathjax:

extensions = [
    # 其他已启用的扩展...
    'sphinx.ext.mathjax',
]

若需要使用MathJax 3版本(推荐),可额外添加路径配置:

mathjax_path = 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js'

4. 重新构建文档

执行Sphinx的构建命令,重新生成HTML文档:

make html

完成以上步骤后,toctree中的数学公式即可正常渲染。

内容的提问来源于stack exchange,提问作者Olivier Ramaré

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 18:42:36