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