使用Sphinx很容易编写扩展,但是很难以正确的方式扩展Sphinx。你知道吗
我想定义一个自定义警告,因此我有:
class exercise(nodes.Admonition, nodes.Element):
pass
class ExerciseDirective(BaseAdmonition):
node_class = exercise
def visit_exercise(self, node, name=''):
self.visit_admonition(node, 'exercise')
def depart_exercise(self, node=None):
self.depart_admonition(node)
def setup(app):
app.add_directive('exercise', ExerciseDirective)
app.add_node(exercise,
html=(visit_exercise, depart_exercise)
)
不幸的是,这还不够,因为我的exercise
没有标题。我注意到docutils/languages
上有警告的翻译,以后可以用language.labels
阅读。因为我的标签exercise
没有定义,所以我没有文本。你知道吗
正确的方法是为定义的语言添加一个新标签。我不知道怎么。。。。你知道吗
一个非常难看的解决方案是破解硬编码的admonitionlabels
:
sphinx.locale.admonitionlabels['exercise'] = 'Exercise'
您还可以手动执行base
visit_admonition
所做的操作,并自己添加title节点:我以
_('Exercise')
为例,但如果您不打算本地化,也可以只放'Exercise'
。你知道吗相关问题 更多 >
编程相关推荐