2012-08-03 14 views
6

में क्रमांकित एंकर, मेरे पास डॉक्सिजन में चित्र करने के लिए बहुत सारे एंकर हैं, उदा।डॉक्सिजन

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

हर जब मैं \ref का उपयोग उन में से एक लिंक करने के लिए, मैं कुछ अच्छा वर्णन बनाने के लिए इतना लंगर के कच्चे नाम उत्पादन में प्रकट नहीं होता है।

क्या डॉक्सिजन में क्रमांकित एंकरों की तरह कुछ होना संभव है जहां लिंक टेक्स्ट उस एंकर की संख्या होगी? आदर्श रूप में कुछ की तरह:

\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

मुझे नहीं लगता कि आंकड़े का स्वत: संख्या, या तो एक पृष्ठ के भीतर या पूरे प्रलेखन भर में, 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... 

अपने आंकड़ों के one और two हाइपरलिंक के साथ

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

हो जाती है।

तब आप अपने विन्यास फाइल में एक उर्फ ​​परिभाषित कर सकते हैं, \fref, Figure \ref जो स्वचालित रूप से पाठ "चित्रा" के साथ हाइपरलिंक संख्या का होना जाएगा परिभाषित का कहना है।

क्या यह समाधान स्वीकार्य है? एकमात्र अन्य विकल्प जिसे मैं सोच सकता हूं, में डॉक्सिजन आउटपुट को प्रोसेसिंग करना शामिल है, लेकिन उपरोक्त समाधान अब तक का सबसे सरल है।

अद्यतन

निम्नलिखित पायथन कोड एक incrementing काउंटर करने के लिए लंगर संदर्भ बदलना होगा:

# 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 के लिए तीन से अधिक आंकड़े शामिल करने की अनुमति के लिए बढ़ाया जा करने के लिए किया है। यह फिर से तुच्छ, लेकिन शायद आसानी से मापन योग्य नहीं है। उपयुक्त शब्द (ओं) को मनमाने ढंग से संख्या से मानचित्रण के लिए समाधान उपलब्ध हैं (इस साइट पर अन्य प्रश्न देखें) तो मैं इस यहाँ लागू करने के लिए परेशान नहीं है।

+0

मैं प्रयास की सराहना करता हूं, लेकिन यह सवाल से बाहर है। दोनों के बीच एक नई छवि जोड़ने की कल्पना करो। निश्चित रूप से, मेरे पास हमेशा मेरे Emacs फ़ंक्शन वृद्धि-संख्या-शब्द होते हैं और इसे जितना संभव हो सके दर्द रहित बना सकते हैं। मुझे अभी भी नहीं लगता कि मेरे योगदानकर्ता सहमत होंगे। – pmr

+0

यह निश्चित रूप से आदर्श नहीं है, लेकिन मुझे लगता है कि यह सबसे आसान समाधान है क्योंकि आप पाएंगे [डॉक्सिजन में कोई आदेश नहीं है] (http://www.stack.nl/~dimitri/doxygen/commands.html) या [ऑटोलिंक विकल्प] (http://www.stack.nl/~dimitri/doxygen/autolink.html) एक वृद्धिशील काउंटर को लागू करने के लिए। आप डॉक्सिजन द्वारा जेनरेट किए गए एक्सएमएल को संशोधित करने के लिए एक स्क्रिप्ट या एक्सएलएसटी लिख सकते हैं। हालांकि, मैं सवाल करता हूं कि क्या यह कुछ मूल्यवान लेबलों को फिर से नामित करने से बचने के लिए उचित है (संभावित रूप से एक बार जब आपका दस्तावेज़ लगभग पूरा हो जाता है तो आंकड़े अधिक बदलने की संभावना नहीं है)। – Chris

+0

मैं उस शेल स्क्रिप्ट के लिए जाना चाहूंगा जिसे उस प्रभाव को प्राप्त करने के लिए INPUT_FILTER के रूप में उपयोग किया जा सकता है। जब आप इसे लागू करते हैं तो बक्षीस के बारे में सोचें! ;) – pmr

संबंधित मुद्दे