2013-09-01 43 views
4

外部链接到一个Git仓库在外部git仓库的形式超链接狮身人面像PDF文档

.. _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/... 

怎么能到一个Git仓库的超级链接被包括在由狮身人面像产生的PDF文档中?

回答

4

这似乎工作:

.. raw:: latex 

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

.. raw:: html 

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

编辑:我看着斯芬克斯的源代码和警告消息在文件斯芬克斯产生/写入器/ latex.py在visit_reference方法,其被定义如下:

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)) 

现在“使latexpdf”和“使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 
+0

谢谢。我想要一个适用于HTML和PDF文档的解决方案 –

+0

请参阅我的编辑。我知道这不是很美,但我找不到一个更好的方法来使它工作。 :) – eminor

+0

谢谢,但我无法同时为HTML和PDF做这项工作。 –