如何重写Sphinx的seealso::指令修改默认'See also'标题?
修改Sphinx
seealso::指令默认顶部标题的实现方案 不需要直接修改Sphinx库源码,两种可落地的方案按需选择即可:
方案1:自定义扩展重写SeeAlso指令(推荐,无主题依赖,升级不失效)
- 项目根目录新建
_ext文件夹(不存在则手动创建,用于存放自定义扩展),在文件夹内新建custom_seealso.py文件,写入以下代码,把CUSTOM_SEEALSO_TITLE的值改成你需要的自定义标题即可:
from docutils.parsers.rst import directives from sphinx.addnodes import seealso from sphinx.directives.other import SeeAlso # 替换为目标自定义标题,例:"相关参考"、"延伸阅读" CUSTOM_SEEALSO_TITLE = "相关参考" class CustomSeeAlso(SeeAlso): def run(self): result_nodes = super().run() for node in result_nodes: if isinstance(node, seealso) and node.children: # 替换提示框顶部的默认标题节点 first_child = node.children[0] if first_child.astext().strip() == "See also": first_child.replace_self( first_child.__class__(CUSTOM_SEEALSO_TITLE, CUSTOM_SEEALSO_TITLE) ) return result_nodes def setup(app): # 用自定义指令覆盖原生seealso指令 directives.register_directive("seealso", CustomSeeAlso) return {"parallel_read_safe": True, "parallel_write_safe": True}
- 打开项目根目录的
conf.py配置文件,添加以下配置加载自定义扩展:
import sys from pathlib import Path sys.path.append(str(Path(__file__).parent / "_ext")) extensions = [ # 保留你原有的其他扩展配置 "custom_seealso", ]
- 重新执行文档构建命令(比如
make html),所有seealso::生成的提示框顶部标题就会替换为你设置的自定义文本。
方案2:修改主题模板(适合不想写扩展的场景,和所用主题绑定)
- 如果你使用固定主题,不需要考虑后续换主题的场景,可以直接找到主题内负责渲染提示框(admonition)的模板文件,一般路径为
templates/admonition.html。 - 在模板内找到识别
seealso类型提示框的分支逻辑,把硬编码的See also文本直接替换成你需要的内容即可。注意如果后续升级主题、切换主题,这个修改需要重新适配。
注意:不要直接修改Sphinx安装目录下的原生源码,后续Sphinx版本升级会直接覆盖修改,维护成本极高。
内容的提问来源于stack exchange,提问作者Amir Khorasani
相关产品推荐
相关产品推荐

