次のように私は、単純なスフィンクスの拡張子を持っています。バーでは、«が、LaTeX出力はテスト»含まれています:?«(Sphinxドキュメンテーションプロセッサの拡張機能は、HTMLとLaTeXの出力が異なる方法で動作しますか?
.. testdirective::
:foo: bar
HTML出力は»テストが含まれているを含むドキュメントを考えると
from docutils import nodes
from docutils.parsers.rst import directives
from sphinx.util.compat import Directive
class testnode(nodes.Element):
def __init__(self, *args, **kwargs):
super(testnode, self).__init__(*args, **kwargs)
self['foo'] = '?'
def visit_testnode_latex(self, node):
self.body.append('Test: %s' % node['foo'])
def depart_testnode_latex(self, node):
pass
def visit_testnode_html(self, node):
self.body.append('<p>Test: %s</p>' % node['foo'])
def depart_testnode_html(self, node):
pass
class TestDirective(Directive):
has_content = False
required_arguments = 0
optional_arguments = 0
final_argument_whitespace = False
option_spec = {
'foo': directives.unchanged,
}
def run(self):
node = testnode()
node['foo'] = self.options.get('foo')
return [node]
def setup(app):
app.add_directive("testdirective", TestDirective)
app.add_node(testnode,
html=(visit_testnode_html,
depart_testnode_html),
latex=(visit_testnode_latex,
depart_testnode_latex))
をデフォルト値)。私はnode['foo']
がTestDirective.run()
の割り当ての後で正しい値を持っていることを確認しましたが、LaTeXライターが実行されるまでそれは固執していません。
私は間違っていますか?