У меня есть расширение Sphinx, которое генерирует блоки кода, которые должны содержать ссылки.Код для генерации блоков кода со ссылками работает, и все же сгенерированные HTML и PDF (через LaTeX) не содержат ссылок.Как я могу заставить ссылки проходить?
Я знаю, что ссылки присутствуют, потому что в моем реальном коде они генерируются как pending_xref
, и я добавил след в resolve_xref
, который показывает, чтоссылки становятся разрешенными.
Я думаю (но я не подтвердил положительно), что происходит, когда Pygments удаляет все форматирование, включая ссылки (даже с отключенной подсветкой, а в моем реальном документе я хочу выделить). Как я могу сделать так, чтобы Pygments сохранял ссылки ?
Вот документ, в котором показана проблема (index.rst
):
.. toctree::
:maxdepth: 2
Target
======
I want to achieve:
.. parsed-literal::
*A link*: `Target`_
But I'm getting:
.. foo::
Мой код расширения (my_extension.py
):
from docutils import nodes
from docutils.parsers.rst import Directive
def make_reference():
ref = nodes.reference('', '', internal=True, refid='target')
ref.append(nodes.Text('Target'))
return [nodes.emphasis(text='A link: '), ref]
class Foo(Directive):
def run(self):
literal = nodes.literal_block()
literal += make_reference()
but = nodes.paragraph(text='In a normal font, it works:')
plain = nodes.paragraph()
plain += make_reference()
return [literal, but, plain]
def setup(app):
app.add_directive('foo', Foo)
Конфигурация (просто по умолчанию sphinx-quickstart
материал, плюс добавление моего расширения):
import os
import sys
sys.path.insert(0, os.path.abspath('.'))
project = 'MWE'
author = 'Gilles'
version = ''
release = ''
extensions = ['my_extension']
templates_path = ['_templates']
source_suffix = '.rst'
master_doc = 'index'
language = None
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
pygments_style = None
Команда построения: sphinx-build -M html . _build