使用 Sphinx 生成的 HTML 删除了“模块”一词

问题描述

一位同事向我指出了这种奇怪的行为。我们使用 Sphinx 生成项目的 HTML 文档,每当我们在文本中使用“模块”一词时,浏览器都会删除该词。

经过一番检查,我注意到这个词确实出现在 HTML 页面的源代码中:

enter image description here

但渲染结果如下:

enter image description here

显然“模块”一词已被删除

进一步检查 html 源代码发现以下 javascript 代码似乎是罪魁祸首:

enter image description here

所以,我想知道这个脚本是谁生成的?它是 Sphinx 还是它的任何扩展?是否有任何解决方法可以在呈现的 html 中显示“模块”一词?

这是我们已激活的 Sphinx 扩展列表:

extensions = [
    'sphinx.ext.autodoc','sphinx.ext.napoleon','sphinx.ext.viewcode','sphinx.ext.todo','sphinx_rtd_theme','sphinx.ext.autosectionlabel','sphinxcontrib.email','sphinxcontrib.bibtex','sphinx.ext.graphviz','sphinx_git',]

更新:

我已经找到了问题的真正原因。由于某种我忽略的原因,我的 layout.html 文件夹中有一个 /source/_templates 文件。这个文件似乎是扩展文件(以某种方式解释here),添加删除“模块”一词的javascript函数。下一步将是找出该文件是如何到达那里的...

解决方法

我似乎想出了一个解决方法(虽然不是最令人满意的解决方案)

我认为这段 javascript 代码会以单程方式工作,因此,键入“modulemodule”而不是“module”会导致删除一次,从而生成最终的“module”。它奏效了!

为了让它稍微好一点,我创建了一个替换为 .. |module| replace:: modulemodule,我将其存储在另一个文件中,并在需要时包含。现在,我只需要把我的句子写成Hello this is a |module|。 (注意 a|module| 之间的双空格)