6

我有很多锚点可以用 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...

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

4

1 回答 1

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将自动在超链接数字之前加上文本“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必须扩展字典以允许包含三个以上的数字。这又是微不足道的,但可能不容易扩展。可以使用从任意数字映射到适当单词的解决方案(请参阅本网站上的其他问题),所以我没有费心在这里实现它。

于 2012-08-07T17:02:53.637 回答