我不认为使用 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...
带有one
和two
超链接到您的数字。
然后,您可以在配置文件中定义一个别名,例如\fref
,定义为Figure \ref
将自动在超链接数字之前加上文本“Figure”。
这个解决方案可以接受吗?我能想到的唯一其他选择涉及对 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
必须扩展字典以允许包含三个以上的数字。这又是微不足道的,但可能不容易扩展。可以使用从任意数字映射到适当单词的解决方案(请参阅本网站上的其他问题),所以我没有费心在这里实现它。