在Sphinx和reStructuredText中使用数字引用数字

时间:2010-04-21 20:27:49

标签: restructuredtext python-sphinx

当编写将使用Sphinx处理的RST时,我无法在引用数字时使用Sphinx LaTeX输出来使用图号。例如,这段代码:

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

.. _figlem:

.. figure:: _static/lemming_invasion.* 

   They're coming!

将转换成这个:

  

旅鼠正在进行攻击   在中看到他们来了!

     

/ image到这里/

     

图1.1:他们来了!

但我想要的是“标准”LaTeX引用数字的方式,如下所示:

  

旅鼠正在进行攻击   见图1.1

我如何实现这一目标?我目前使用的代码是Sphinx手册推荐的代码,但它不会产生我想要的输出。

5 个答案:

答案 0 :(得分:22)

在Sphinx(1.3+)的最新版本中,编号数字和从文本引用它们变得更容易,因为它现在已经内置了对它的支持。

在您的文字中,您可以执行以下操作:

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


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

最终结果应该是“在图1.1中你可以看到......”。此技术适用于默认HTML输出和LaTeX输出。

conf.py文件中,请务必设置标记numfig = True。参考文档格式(numfig_formatnumfig_secnum_depth)也有配置选项。

参考文献:

答案 1 :(得分:18)

numfig扩展正是如此。我试过了,它对我有用。

答案 2 :(得分:6)

要扩展已接受的答案,您可以快速完成以下设置。将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`).

答案 3 :(得分:0)

我认为引用数字尚未在reST中实现,但这里有解决方法http://article.gmane.org/gmane.text.docutils.user/5623,可以让您更接近。

答案 4 :(得分:0)

可以使用原始乳胶代码,内联。对于上面的示例,首先定义原始乳胶代码的角色,而不是用于使用\ref{} latex命令引用该图,并使用\label{} latex命令将标签设置为图。

以下内容应该有效:

.. 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{}命令将显示在tex文件的标题内,但仍然可以接受,至少是pdflatex。另请注意,:raw-latex之前至少应有一个空格。