SPHINX - numref работает для HTML, но не для LaTex

Я работаю над проектом Sphinx по программной документации, который включает в себя множество цифр. Я использую numref для ссылки на изображения. В HTML это нормально работает. В LaTex получается рис.?? В сети есть всего несколько проблем с numref, и ответы мне не помогли. Кто-нибудь может сказать мне, что я делаю не так?

Я установил среду Sphinx с помощью sphinx-quickstart. Соответствующие строки из моего 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.

Кто-нибудь может дать мне подсказку, как это исправить?

2 ответа

На это ушло много времени, но наконец я нашел ответ. Исходный код должен выглядеть так:

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

        Hippopotamus    

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

Отображается в HTML и PDF как:

Или, другими словами, для:numref: для правильной работы рисунку требуется текст заголовка. При генерации HTML, если текст заголовка присутствует, вы увидите «Рисунок 2.1: Бегемот», а если вы его не укажете, ссылка HTML:numref: по-прежнему работает, но заголовок под рисунком отсутствует. Для вывода PDF подпись обязательна. (Если вы заметили, вы также получили предупреждение об отсутствии ссылки от latexpdf.)

Другие вопросы по тегам