Pygments убивает гиперссылки в литеральных блоках, генерируемых расширением Sphinx - PullRequest
0 голосов
/ 15 марта 2019

У меня есть расширение 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

...