Ich glaube nicht, dass eine automatische Anzahl von Zahlen, entweder innerhalb einer Seite oder über die gesamte Dokumentation, mit Doxygen möglich ist (ich würde mich freuen, hier korrigiert zu werden). Eine einfache Lösung für Ihre Frage ist jedoch, dass Sie den Ankertext durch Zahlen ersetzen, d. H. "Eins", "Zwei", "Drei" usw. Alternativ können Sie, wenn Sie viele Zahlen haben, römische Ziffern verwenden. Einfache Zahlen scheinen nicht als Anker-Links zu funktionieren.
Ihr Beispiel wird dann mit zusätzlichem Text in den Bildunterschriften werden,
\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...
was
Here Figure one shows... Figure two is...
mit one
und two
Hyperlinks zu Ihren Zahlen.
Sie können dann einen Alias in Ihrer Konfigurationsdatei definieren, sagen wir \fref
, definiert als Figure \ref
, die automatisch den hyperlinked Nummern mit dem Text "Abbildung" vorangestellt wird.
Ist diese Lösung akzeptabel? Die einzige andere Alternative, die ich mir vorstellen kann, ist die Nachbearbeitung des Doxygen-Ausgangs, aber die obige Lösung ist bei weitem die einfachste.
aktualisieren
Der folgende Python-Code wird Anker Verweis auf einen Vorwärtszähler verwandeln:
# 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
Wenn Sie dieses Skript Ergebnis in der Ausgabe
\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...
Es ist trivial zu ändern Das obige Skript, um von der Standardeingabe zu lesen und in Standardausgabe zu schreiben, so dass dies leicht in con verwendet werden kann Kreuzung mit der INPUT_FILTER
Konfigurationsdatei Option.
Eine Sache zu beachten ist, dass das Wörterbuch numbers
erweitert werden muss, damit mehr als drei Zahlen eingeschlossen werden können. Dies ist wiederum trivial, aber wahrscheinlich nicht leicht skalierbar. Lösungen für die Zuordnung von beliebigen Zahlen zu den entsprechenden Wörtern sind verfügbar (siehe andere Fragen auf dieser Seite), so dass ich mich nicht darum gekümmert habe, dies hier umzusetzen.
Ich schätze den Aufwand, aber das kommt nicht in Frage. Stellen Sie sich vor, Sie fügen ein neues Bild zwischen den beiden hinzu. Klar, ich habe immer meine Emacs Funktion Inkrement-Nummer-Wort und kann das so schmerzfrei wie möglich machen. Ich denke immer noch nicht, dass einer meiner Mitwirkenden zustimmen würde. – pmr
Das ist natürlich nicht ideal, aber ich denke, es ist die einfachste Lösung, die Sie finden werden, da [doxygen anscheinend keine Befehle hat] (http://www.stack.nl/~dimitri/doxygen/commands.html)) oder [Autolink-Optionen] (http://www.stack.nl/~dimitri/doxygen/autolink.html) zum Implementieren eines inkrementierenden Zählers. Sie könnten stattdessen ein Skript oder XLST schreiben, um das von doxygen erzeugte XML zu modifizieren. Ich würde jedoch in Frage stellen, ob es sich lohnt, nur einige Male die Umbenennung einiger Zahlenschilder zu vermeiden (vermutlich werden sich die Zahlen, wenn Ihre Dokumentation fast vollständig ist, wahrscheinlich nicht viel ändern). – Chris
Ich würde lieber ein Shell-Skript verwenden, das als INPUT_FILTER verwendet werden kann, um diesen Effekt zu erzielen. Denken Sie an das Kopfgeld, während Sie es umsetzen! ;) – pmr