Pygments杀死Sphinx扩展生成的文字块中的超链接

时间:2019-03-14 22:07:37

标签: hyperlink python-sphinx pygments

我有一个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

0 个答案:

没有答案