问题描述
一位同事向我指出了这种奇怪的行为。我们使用 Sphinx 生成项目的 HTML 文档,每当我们在文本中使用“模块”一词时,浏览器都会删除该词。
经过一番检查,我注意到这个词确实出现在 HTML 页面的源代码中:
但渲染结果如下:
显然“模块”一词已被删除。
进一步检查 html 源代码发现以下 javascript 代码似乎是罪魁祸首:
所以,我想知道这个脚本是谁生成的?它是 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|
之间的双空格)