我有一个 Sphinx 文档实用程序的简单扩展(我使用的版本是Sphinx-1.1.3-py2.6)。非常喜欢Doug Hellmann 的这个出色的例子。如何在最终的 HTML 中添加rel='bar'属性标签?
似乎有几种方法可以做到这一点,但我找不到一个简单的方法。建议和提示表示赞赏。
参考节点以这种方式创建:
node = nodes.reference(rawtext, utils.unescape(text),
internal=False,
refuri=ref,
classes=['foocss'],
rel='bar',
**options)
但是,rel='bar'属性会从最终的 HTML 标记中删除。通过源代码搜索让我找到了sphinx/writers/html.py和HTMLTranslator类。这是 visit_reference 方法的一部分:
# overwritten
def visit_reference(self, node):
atts = {'class': 'reference'}
<snip>
if 'reftitle' in node:
atts['title'] = node['reftitle']
self.body.append(self.starttag(node, 'a', '', **atts))
不处理附加属性。也许它们可以在其他部分被替换。在这方面我找不到任何有用的东西。
所以,我可以:
- 创建一个自定义节点,重新实现参考节点的所有功能。一点点的工作量就够了。
- 覆盖sphinx/writers/html.py中的 *visit_reference* 方法。更快,但在未来的 Sphinx 更新方面很糟糕。
- 事后将带有 jQuery 的 rel 属性添加到链接标记。嗯,也不漂亮。
我确定我错过了明显而优雅的解决方案。
谢谢!