【问题标题】:SPHINX - numref works for HTML but not for LaTexSPHINX - numref 适用于 HTML 但不适用于 LaTex
【发布时间】:2020-03-26 09:19:56
【问题描述】:

我正在开发一个用于软件文档的 Sphinx 项目,其中包含大量数字。 我使用“numref”来引用图片。在 HTML 中它工作正常。在 LaTex 中,我得到了 Fig. ?? 网上的 numref 只有几个问题,答案对我没有帮助。 谁能告诉我我做错了什么?

我使用 sphinx-quickstart 安装了 Sphinx 环境。 我的 conf.py 中的相关行是:

    # Conf.py

    # Automatic numbering
    numfig = True

    # -- Options for LaTeX output ------------------------------------------------

    latex_elements = {
        # The paper size ('letterpaper' or 'a4paper').
        #
        'papersize': 'a4paper',

        # The font size ('10pt', '11pt' or '12pt').
        #
        'pointsize': '10pt',

        # Additional stuff for the LaTeX preamble.
        # 'preamble': '',

        # Latex figure (float) alignment
        # 'figure_align': 'htbp',
        'figure_align': 'H' # disable floating
    }

    # Grouping the document tree into LaTeX files. List of tuples
    # (source start file, target name, title,
    #  author, documentclass [howto, manual, or own class]).

    latex_documents = [
        (master_doc, 'PDF_Test.tex', 'PDF generation',
         'Niels de Nies', 'manual'),
    ]

我的来源(index.rst)看起来像:

    #########################
    Sphinx numref Test
    #########################

    My first chapter
    ----------------

    The purpose of this test is to get the numref of figures working in LaTex.

    Section 1
    ~~~~~~~~~
    .. figure:: ../images/hippo.png
        :name: hippo

    :numref:`hippo` Hippopotamus    

    The figure above (:numref:`hippo`) shows an illuminated hippopotamus.

    The 'numref' works fine in HTML, but results in Fig. ?? with LaTex

    Below the alternative way using a label. The results are exactly the same:
    Perfect for HTML, but undefined reference for latexpdf

    .. _fig_hippo:

    .. figure:: ../images/hippo.png
        :name: hippo

    :numref:`fig_hippo` Hippopotamus    

在命令行 LaTeX 显示:

    === TeX engine is 'pdfTeX'
    Latexmk: Index file 'PDF_Test.idx' was written
    Latexmk: Log file says output to 'PDF_Test.pdf'
    Latexmk: List of undefined refs and citations:
      Reference `index:hippo' on page 1 undefined on input line 111
      Reference `index:hippo' on page 1 undefined on input line 113
    Latexmk: Summary of warnings from last run of (pdf)latex:
      Latex failed to resolve 2 reference(s)
    Latexmk: All targets () are up-to-date

在生成的 PDF_Test.tex 中,以下几行给了麻烦:

    \hyperref[\detokenize{index:hippo}]{Fig.\@ \ref{\detokenize{index:hippo}}} Hippopotamus

    The figure above (\hyperref[\detokenize{index:hippo}]{Fig.\@ \ref{\detokenize{index:hippo}}}) shows an illuminated hippopotamus.

谁能告诉我如何解决这个问题?

【问题讨论】:

  • 请不要粘贴日志文件的图像。粘贴实际文本。
  • 同时检查 Sphinx 问题跟踪器。好像有一个lot of issues with numref
  • 我检查了问题跟踪器,但只有一个问题与我的问题相似。但建议的“解决方法”对我不起作用。
  • 肯定有名称选项。我在 index.rst 的底部添加了另一种方法,使用标签。但结果是一样的。
  • 请提交解决方案作为答案。 stackoverflow.com/help/self-answer

标签: python-sphinx pdflatex pdftex


【解决方案1】:

花了很多时间,但我终于找到了答案。 源代码应如下所示:

    .. figure:: ../images/hippo.png
        :name: hippo

        Hippopotamus    

    The figure above (:numref:`hippo`) shows an illuminated hippopotamus.

以 HTML 和 PDF 格式显示,例如:

【讨论】:

    【解决方案2】:

    或者,换一种说法,要使 :numref: 正常工作,该图需要标题文本。生成 HTML 时,如果有标题文本,您会看到“图 2.1:河马”,如果您不使用 HTML :numref: 链接仍然有效,但图下方的标题丢失。对于 PDF 输出,标题是必需的。 (如果您注意到了,您还会收到来自 latexpdf 的缺少参考警告。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-02
      • 2021-07-30
      • 2019-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      • 1970-01-01
      相关资源
      最近更新 更多