4

以表格形式指向 git 存储库的外部超链接

.. _Git repo: git://github.com/migueldvb/repo.git

在 HTML 文档中正确显示,但它们未显示在 PDF 文件中。python setup.py sphinx_build -b latex运行生成LaTeX文件时出现警告:

unusable reference target found git://github.com/...

如何在 Sphinx 生成的 PDF 文档中包含指向 git 存储库的超链接?

4

1 回答 1

4

这似乎有效:

.. raw:: latex

    \href{git://github.com}{GitHub}

.. raw:: html

    <a href="git://github.com">GitHub</a>

编辑:我查看了sphinx的源代码,在visit_reference方法的文件sphinx/writers/latex.py中产生了警告信息,定义如下:

def visit_reference(self, node):
        uri = node.get('refuri', '')
        # ...
        elif uri.startswith('mailto:') or uri.startswith('http:') or \
                 uri.startswith('https:') or uri.startswith('ftp:'):
            self.body.append('\\href{%s}{' % self.encode_uri(uri))
        else:
            self.builder.warn('unusable reference target found: %s' % uri,
                              (self.curfilestack[-1], node.line))
            self.context.append('')

所以协议是硬编码的,因此我认为不使用原始数据或更改狮身人面像源以使“未知”链接正常工作是没有选择或简单的方法的。

我在源代码中为 git 协议添加了一行:

def visit_reference(self, node):
        uri = node.get('refuri', '')
        # ...
        elif uri.startswith('mailto:') or uri.startswith('http:') or \
                 uri.startswith('git:') or \
                 uri.startswith('https:') or uri.startswith('ftp:'):
            self.body.append('\\href{%s}{' % self.encode_uri(uri))

现在“make latexpdf”和“make html”正在生成带有工作 git 链接的文档,该链接具有以下来源:

Test Link
=========

This is a paragraph that contains `a link`_.

.. _a link: git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
于 2013-09-01T17:28:13.253 回答