狮身人面像在LaTeX中的交叉参照



我在文件A中识别了以下引用:

.. _my-label:

我在文件B:中引用了它

this is a reference to file A :ref:`my-label`

这将在输出HTML时生成预期的交叉引用。然而,当输出LaTeX时,它没有,我有经典的警告:

LaTeX Warning: Hyper reference `my-label:my-label' on page XX undefined on input line YY.

有没有像双重编译这样的LaTeX技巧或类似的东西我做得不对?

我遇到了同样的问题。对我来说,HTML编译没有错误,但LaTeX编译确实抛出了您描述的hyperref错误。在我看来,出于某种模糊的原因,斯芬克斯并没有创建hyperref试图引用的标签。


我想出了以下解决方案:由于我不知道如何包括丢失的标签,我只会让LaTeX不再寻找它们。详细地说,我通过重写hyperref命令来完成此操作。

我在conf.py文件中包含了以下代码:

latex_elements = {
'preamble': r'''
renewcommand{hyperref}[2][]{#2}
'''
}

这包括斯芬克斯创建的LaTeX文件序言中的renewcommand{...。它将覆盖hyperref命令,这样它就不会试图插入链接,而只是打印链接文本。

显然,使用此解决方案,导致错误的引用不会在PDF文档中显示为超链接,但至少它是在编译时没有错误的。


注意

我所描述的对于我的用例来说非常好,但是,Hyperref手册中描述了hyperref命令可以用两种不同的方式调用(hyperref{URL}{category}{name}{text}hyperref[label]{text}(。我只是改写了第二个,因为这似乎是斯芬克斯用来交叉引用的那个。但是,在某些情况下,重写命令时不考虑第一个可能会导致问题。

最新更新