Ссылки на цифры с номерами в Sphinx и reStructuredText

При написании RST, который будет обрабатываться с помощью Sphinx, я не могу получить вывод Sphinx LaTeX для использования номеров фигур при ссылках на цифры. Например, этот код:

The lemmings are attacking, as can be seen in :ref:`figlem`.

.. _figlem:

.. figure:: _static/lemming_invasion.* 

   They're coming!

Будет преобразован в это:

Лемминги нападают, как можно видеть в Они идут!

/ изображение идет сюда /

Рисунок 1.1: Они идут!

Но то, что я хочу, это "стандартный" LaTeX способ ссылки на фигуры, например так:

Лемминги атакуют, как видно на рисунке 1.1

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

5 ответов

Решение

Расширение numfig делает именно это. Я попробовал это, и это сработало для меня.

В последних версиях Sphinx (1.3+) нумерация рисунков и ссылки на них из текста стали немного проще, поскольку поддержка для них теперь встроена.

В своем тексте вы можете сделать что-то вроде:

.. _label:
.. figure:: images/figure.*


At :numref:`label` you can see...

Конечный результат должен выглядеть примерно так: "На Рис. 1.1 вы видите...". Этот метод работает как с выводом HTML по умолчанию, так и с выводом LaTeX.

В вашем conf.py файл, не забудьте установить флаг numfig = True, Существуют также параметры конфигурации для текстового формата ссылок (numfig_format а также numfig_secnum_depth).

Рекомендации:

Чтобы расширить принятый ответ, вы можете быстро настроить его следующим образом. Положить numfig.py файл в вашем source каталог. Тогда открой conf.py и раскомментируйте строку, которая говорит

sys.path.insert(0, os.path.abspath('.'))

Затем добавьте 'numfig' к extensions список.

Использовать в вашем rst документ, сначала пометьте свою фигуру (например, fig-main):

.. _fig-main:

.. figure:: main.png

   This is the figure caption.

Наконец, вы можете ссылаться на его номер фигуры, используя :num: директива, вот так:

Refer to the main figure (Figure :num:`fig-main`).

Я думаю, что ссылки на рисунки еще не реализованы в reST, но здесь есть обходной путь http://article.gmane.org/gmane.text.docutils.user/5623, который приближает вас.

Можно использовать сырой латексный код, встроенный. В приведенном выше примере сначала определяется роль необработанного латексного кода, а затем используется для ссылки на рисунок с \ref{} Латексная команда, и установить метку на рисунке с помощью \label{} латексная команда.

Следующее должно работать:

.. role:: raw-latex(raw)
     :format: latex

The lemmings are attacking, as can be seen in :ref:`figlem`
on figure :raw-latex:`\ref{pic:lem}`.

.. _figlem:

.. figure:: _static/lemming_invasion.* 

   They're coming! :raw-latex:`\label{pic:lem}`

Обратите внимание, что \label{} Команда появится внутри заголовка в текстовом файле, но это все еще приемлемо, по крайней мере, pdflatex, Также обратите внимание, что должен быть хотя бы один пробел перед :raw-latex,

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