Sphinx RTD Theme子标题嵌套显示异常问题求助
解决Sphinx + RTD主题侧边栏目录异常问题
问题根源
你用.. include::把整个README.rst导入到单个index.rst里,这种单文件结构会让Sphinx的文档树解析逻辑混乱。RTD主题的侧边栏导航依赖Sphinx正确识别文档的层级结构,而单文件里的二级标题(比如From PyPI)会被误识别为上一级标题(Installation)的子项,而非同级顶级章节。
具体解决步骤
拆分文档结构,放弃单文件导入
把README里的各个大章节拆成独立的rst文件:- 将
Description部分存为description.rst Installation相关内容存为installation.rstUsage和Implementation分别存为usage.rst、implementation.rst
项目根目录的README.rst保留原样,文档源文件里不再直接include整个文件。
- 将
重构index.rst的toctree结构
修改index.rst,用toctree明确指定文档层级:################ django-npi-field ################ .. toctree:: :maxdepth: 2 :caption: 目录 description installation usage implementation修正RTD主题的导航配置
在conf.py里调整主题参数,注意RTD主题用navigation_depth控制导航深度,而非普通的max_depth:html_theme = "sphinx_rtd_theme" html_theme_options = { "collapse_navigation": False, # 先关闭折叠,确认层级正确后再按需开启 "navigation_depth": 2, }处理README内容复用(可选)
如果需要在文档里复用README的内容,不要直接include整个文件,而是用精准截取的方式,比如:.. include:: ../README.rst :start-line: 5 :end-line: 10只导入需要的段落,避免破坏文档树的层级结构。
消除AttributeError警告
拆分文档后这个警告大概率会自动消失,如果还存在,检查各个rst文件里的链接定义、指令格式,比如确认外部链接的引用没有语法错误。
内容的提问来源于stack exchange,提问作者null-and-void
相关产品推荐
相关产品推荐

