在doxygen中编号的锚点

时间:2012-08-03 16:12:08

标签: anchor doxygen

我在doxygen中有相当多的锚点,例如

\anchor pic_foo
\image html foo.gif "My Caption"
\anchor pic_bar
\image html bar.gif "My Caption"

每次当我使用\ref链接其中一个时,我都要弥补 一些不错的描述,因此锚的原始名称不会出现 输出

是否有可能在doxygen中使用编号锚点之类的东西 链接文本将是该锚点的编号?理想的情况下 类似的东西:

\anchor pic_foo
\image html foo.gif "My Caption"
\anchor pic_bar
\image html bar.gif "My Caption"

As Figure \ref pic_foo shows... Figure \ref pic_bar is...

理想情况下应转换为:

As Figure 1 shows... Figure 2 is...

其中数字是链接。我会对各种计数方案(文档全局或页面本地)感到满意。

1 个答案:

答案 0 :(得分:4)

我不认为使用doxygen可以在页面内或整个文档中自动显示数字(我很乐意在此更正)。但是,一个简单的解决方案是用拼写的数字替换你的锚文本,即“一”,“两个”,“三个”...等等。或者,如果你有很多数字,你可以使用罗马数字。普通数字似乎不能用作锚链接。

您的示例将成为图标题中的附加文字

\anchor one
\image html foo.gif "Figure one: My Caption"
\anchor two
\image html bar.gif "Figure two: My Caption"

As Figure \ref one shows... Figure \ref two is...

导致

Here Figure one shows... Figure two is...

onetwo超链接到你的数字。

然后,您可以在配置文件中定义一个别名,例如\fref,定义为Figure \ref,它将自动在超链接数字前面加上文字“图”。

这个解决方案可以接受吗?我能想到的唯一其他选择包括后处理doxygen输出,但上述解决方案是迄今为止最简单的。

<强>更新

以下Python代码会将锚引用转换为递增计数器:

# Test documentation.
s = r"""
\anchor pic_foo
\image html foo.gif "My Caption"
\anchor pic_bar
\image html bar.gif "My Caption"

As Figure \ref pic_foo shows... Figure \ref pic_bar is...
"""

# Split string into a list of lines.
s = s.split('\n')

# Dictionaries for mapping anchor names to an incrementing counter.
d = {}

numbers = {1: 'one',
    2 : 'two',
    3 : 'three'}

counter = 1

# Find all anchor links and map to the next counter value.
for line in s:
    if r'\anchor' in line:
        d[line.split(r'\anchor ')[1]] = numbers[counter]
        counter += 1

# Reform original string.
s = '\n'.join(s)

# Replace anchor links with appropriate counter value.
for key, value in d.items():
    s = s.replace(key, value)

print s

运行此脚本会产生输出

\anchor one
\image html foo.gif "My Caption"
\anchor two
\image html bar.gif "My Caption"

As Figure \ref one shows... Figure \ref two is...

修改上述脚本以从标准输入读取并写入标准输出是很简单的,因此可以很容易地与INPUT_FILTER配置文件选项一起使用。

需要注意的一点是,必须扩展字典numbers以允许包含三个以上的数字。这又是微不足道的,但可能不容易扩展。从任意数字映射到适当的单词的解决方案是可用的(请参阅本网站上的其他问题),所以我没有打算在这里实现它。