2016-03-07 6 views
0

Я пытаюсь написать настраиваемую директиву, которая испускает ссылку на другой раздел, но я не могу найти документацию о доступных типах узлов или как прагматически испускать ссылку.Добавить ссылку из директивы

test.rst
.. _test: 

Test 
==== 

.. test:: 

The test directive should generate a reference in the form of :ref:`test`. 

test.py

from docutils import nodes 
from docutils.parsers.rst import Directive 

def setup(app): 
    app.add_directive('test', TestDirective) 
    return {'version': '0.1'} 

class TestDirective(Directive): 
    def run(self): 
     # this would normally come from an argument on the directive 
     name = 'test' 

     node = nodes.block_quote() 
     node += nodes.Text('The ref is: ') 

     # this should emit :ref:`name` where name is variable 
     # node += ??? 

     return [node] 

ответ

0

Вы можете попробовать это.

node += nodes.reference(refid=name) 
+0

Это, кажется, не правильно перекрестных ссылок, и будет, как '' The исх является: 'test'_'', который не является такой же, как' 'терпение является:: Ссылка:' test' ''. Я ожидал некоторую форму pending_xref, но, похоже, есть какой-то API для их создания, чтобы получить правильный домен и т. Д. Я просто не могу понять этот API из источника. –