2012-05-02 12 views
9

खोलने के लिए बल दस्तावेज़ कमांड कहें कि मैंने पैकेज में एक कक्षा लिखी है, जिसे mypackage.myclass कहा जाता है। मैंने पैकेज और कक्षा के लिए अपना स्वयं का HTML दस्तावेज़ लिखा है, और इसे the MATLAB documentation में वर्णित MATLAB सहायता ब्राउज़र में शामिल किया है।MATLAB: एक निर्दिष्ट संदर्भ HTML पृष्ठ

मैं इस HTML दस्तावेज़ को सीधे ब्राउज़र पर नेविगेट करने के लिए सहायता ब्राउज़र का उपयोग करके प्रदर्शित कर सकता हूं, लेकिन टाइपिंग doc mypackage.myclass इसे प्रदर्शित नहीं करता है; इसके बजाय यह कुछ HTML दस्तावेज़ों को प्रदर्शित करता है जो helpwin द्वारा ऑटो-जेनरेट किया गया है (जो एक अच्छी सुविधा है, लेकिन जो भी मैं चाहता हूं - ऑटो-जेनरेटेड दस्तावेज़ मेरे उपयोगकर्ताओं के लिए बहुत तकनीकी है)।

ऑटो-जेनरेट किए गए दस्तावेज़ों के बजाय, मेरे दस्तावेज़ों को प्रदर्शित करने के लिए मैं doc को कैसे मजबूर कर सकता हूं?

इसके तुल्य

:

जब आप doc docTopic चलाने के लिए, दस्तावेज़ आदेश के अंदर जावा वर्ग com.mathworks.mlservices.MLHelpServices.showReferencePage(docTopic) कहा जाता हो जाता है। यदि docTopic के लिए कोई संदर्भ पृष्ठ मौजूद है, तो यह इसे प्रदर्शित करता है और एक सफल मूल्य देता है। यदि कोई संदर्भ पृष्ठ मौजूद नहीं है, तो यह विफलता मान देता है, जिसके बाद कॉल करने के लिए helpwin(docTopic) का कारण बनता है। कहीं कुछ कैटलॉग होना चाहिए जो व्यक्तिगत संदर्भ HTML फ़ाइलों के साथ docTopic के मानों को जोड़ता है। मैं उस कैटलॉग के साथ कैसे परेशान हो सकता हूं - या क्या मैं अपने पैकेज के लिए एक बना सकता हूं?

MathWorkers और @Yair, के रूप में मैं जानता हूँ कि यह संभव है और MathWorks द्वारा इरादा नहीं नहीं है मुझे जहाँ तक :)

+0

क्या आप वाकई कहीं गलती नहीं कर चुके हैं? [XUnit] (http://www.mathworks.com/matlabcentral/fileexchange/22846-matlab-xunit-test-framework) पैकेज प्रलेखन के मामले में ठीक काम कर रहा है। – Jonas

+0

@ जोनास हां - जब मैं 'डॉक्टर रनटेस्ट' या 'डॉक्टर टेस्टकंपोनेंट' चलाता हूं, तो मुझे HTML दस्तावेज़ों को प्राप्त होता है जो उन वर्गों के लिए 'helpwin' द्वारा स्वतः उत्पन्न होता है। हालांकि xUnit में कुछ बेहतरीन ट्यूटोरियल दस्तावेज शामिल हैं (मुझे ऐसा करने में कोई समस्या नहीं है), इसमें कक्षाओं/कार्यों के लिए स्वयं का अलग HTML दस्तावेज़ शामिल नहीं है। –

+0

ओह, मैं देखता हूं। मैंने पहले आपके प्रश्न को गलत समझा।मुझे लगता है कि प्रश्न बन जाता है: क्या हाइपरलिंक्ड सहायता तक पहुंचने के लिए लोगों को 'डॉक्टर मायपैकेज' का उपयोग करने के लिए शिक्षित करना आसान होगा? – Jonas

उत्तर

3

साथ अपने आप को फांसी के लिए पर्याप्त undocumented रस्सी का ब्योरा दें। मैं इसे करने के एक अनियंत्रित तरीके से नहीं जानता। जहां तक ​​मुझे याद है कि doc के लिए कीवर्ड कहीं भी हार्ड-कोड किए गए हैं।

अपने सेटअप के आधार पर आप यह कर सकते:

function doc(topic) 

    my_topics = { 
     'foo', 'foo.html' 
     'bar', 'bar/help/intro.html' 
    }; 

    for i = 1 : size(my_topics, 1) 
     if strcmpi(topic, my_topics{i, 1})  
      web(my_topics{i, 2}, '-helpbrowser'); 
      return; 
     end 
    end 

    % Fall back to MATLAB's doc. Note that our doc shadows MATLAB's doc. 
    docs = which('doc', '-all'); 
    old_dir = cd(); 
    c = onCleanup(@() cd(old_dir)); 
    cd(fileparts(docs{2})); 
    doc(topic); 
end 

आप एक फ़ाइल doc.m में है कि समारोह रखा है और अगर रख: अपनी खुद की doc आदेश web(..., '-helpbrowser') का उपयोग करता है MATLAB की मदद ब्राउज़र में HTML पृष्ठों को प्रदर्शित करने के लिए तैयार MATLAB पथ की शुरुआत में संबंधित निर्देशिका (help addpath देखें) तो इसे अंतर्निहित doc के बजाय बुलाया जाएगा।

बेशक आप अपने कस्टम डॉक मैपिंग (उदाहरण के लिए एक फ़ाइल) स्टोर करने के लिए किसी अन्य स्थान का उपयोग कर सकते हैं या किसी प्रकार की गतिशील लुकअप योजना का उपयोग कर सकते हैं।

अद्यतन: MATLAB R2012b के रूप में, web की '-helpbrowser' विकल्प undocumented है। यह शायद उस MATLAB संस्करण में जीयूआई परिवर्तन से संबंधित है, जिसमें सहायता ब्राउज़र भी शामिल है। web(..., '-helpbrowser') अभी भी इरादे के रूप में काम करता है, लेकिन यह MATLAB के भविष्य के संस्करणों में बदल सकता है। जहां तक ​​मुझे पता है, R2012b में सहायता ब्राउज़र में किसी भी HTML पृष्ठ को खोलने का कोई दस्तावेज तरीका नहीं है।

+0

यह मुझे इस तरह के दस्तावेज़ कमांड को छाया करने के लिए थोड़ा गंदा महसूस करेगा, लेकिन एक हैक के रूप में ऐसा लगता है कि यह काम कर सकता है। बेशक, अगर मेरे पास इस तरह के कई पैकेज हैं और उन्हें प्रत्येक को अपने दस्तावेज़ कमांड की आवश्यकता है तो यह अधिक जटिल हो जाएगा। मैं स्वीकार करने जा रहा हूं, हालांकि, यह एक समाधान के सबसे नज़दीकी है जो मेरे पास लंबे समय से बहुत दूर है। धन्यवाद। –

+0

@ सैम रॉबर्ट्स: आपको यह पसंद है। यह एक हैक है, इसमें कोई संदेह नहीं है, और कई स्वतंत्र परियोजनाओं के लिए इसका उपयोग करने से परेशानी होगी। हमें एक ही समस्या का सामना करना पड़ा और '' doc'' को छायांकित करने के बजाए अपने नाम ''doc'' कमांड को दूसरे नाम से शिप करने का फैसला किया। नकारात्मकता यह है कि उपयोगकर्ताओं को याद रखना होगा कि किस आदेश का उपयोग करना है। –

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