Ссылки на цифры с номерами в 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
,