Sphinx文档,编号图形引用
我正在尝试在我的Sphinx文档项目中使用latexpdf输出,让图形编号正常工作。我安装了在这里找到的Sphinx numfig.py扩展 https://bitbucket.org/arjones6/sphinx-numfig
但是,每当我使用:num:标签来提供与图形编号的交叉引用时,我却得到了以下内容:
rst
.. _fig_logo:
.. figure:: logo.*
Example of a figure
Reference to logo :num:`figure #fig_logo`
生成的输出是:
对logo图形的引用 ??
我是不是做错了什么?
1 个回答
7
看起来如果你的标签名称里有下划线(比如 fig_logo
),sphinx 会把这个下划线替换成一个减号(-
)。这样做是有道理的,因为在某些情况下,latex 对下划线的处理会有点奇怪。而引用的时候仍然使用下划线。这样一来,latex 就找不到你引用的标签了。
这是 sphinx 生成的 tex 代码:
\includegraphics{logo.png}
\caption{Example of a figure}\label{index:fig-logo}\end{figure}
Reference to logo \hyperref[index:fig_logo]{figure \ref*{index:fig_logo}}
(注意 fig-logo
作为标签和 fig_logo
作为引用之间的区别。)
如果你把下划线换成减号,比如说:
.. _fig-logo:
.. figure:: logo.png
Example of a figure
Reference to logo :num:`figure #fig-logo`
那么生成的 tex 代码看起来是这样的:
\includegraphics{pandas_bar.png}
\caption{Example of a figure}\label{index:fig-logo}\end{figure}
Reference to logo \hyperref[index:fig-logo]{figure \ref*{index:fig-logo}}
在生成的 PDF 中,这个问题就解决了,显示为:
对图标 1 的引用
更新
如果你不想更改所有的标签,可以更新 numfig
:只需在你扩展的副本中第 27 行之前添加这一行:
target = target.replace('_', '-')
我在 bitbucket 上开了一个 问题。