2012-05-02 39 views
9

假設我已經在包中編寫了一個類,名爲mypackage.myclass。我已經爲包和類編寫了自己的HTML文檔,並將其包含在MATLAB幫助瀏覽器中,如the MATLAB documentation中所述。MATLAB:force doc命令打開指定的參考HTML頁面

我可以使用幫助瀏覽器直接導航到它來顯示此HTML文檔,但是輸入doc mypackage.myclass不會顯示它;而是顯示一些由helpwin自動生成的HTML文檔(這是一個很好的功能,但不是我想要的 - 自動生成的文檔對我的用戶來說太過於技術性)。

如何強制doc顯示我的文檔,而不是自動生成的文檔?

等價的:

當您運行doc docTopic,商務部命令裏面的Java類com.mathworks.mlservices.MLHelpServices.showReferencePage(docTopic)被調用。如果存在參考頁面docTopic,則會顯示它並返回成功值。如果參考頁面不存在,則返回失敗值,然後導致調用helpwin(docTopic)。某處必須有一些目錄將docTopic的值與單個參考HTML文件連接起來。我如何擺弄那個目錄 - 或者我可以爲我的包創建一個?

MathWorkers和@Yair,請給我足夠的無證繩:)

+0

你確定你沒有在某個地方犯錯嗎?在文檔方面,[xUnit](http://www.mathworks.com/matlabcentral/fileexchange/22846-matlab-xunit-test-framework)包似乎沒有問題。 – Jonas

+0

@Jonas是的 - 當我運行'doc runtests'或'doc TestComponent'時,我得到了'helpwin'爲這些類自動生成的HTML文檔。雖然xUnit包含了一些很棒的教程文檔(我沒有這樣做的問題),但它並沒有爲類/函數本身包含它自己的單獨的HTML文檔。 –

+0

哦,我明白了。我之前誤解了你的問題。我想那麼問題就變成了:教育人們如何使用doc docpackage來訪問超鏈接幫助會更容易一些嗎? – Jonas

回答

3

掛自己至於我知道這是不可能的,而不是由MathWorks公司預期。我也不知道這樣做的無證方式。據我記得doc的關鍵字是硬編碼的地方。

根據您的設置,你可以嘗試以下方法:準備使用web(..., '-helpbrowser')顯示在MATLAB的幫助瀏覽器的HTML網頁自己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並把在MATLAB路徑開頭的相應目錄(見help addpath),那麼它將被調用,而不是內置的doc

當然,您可以使用其他位置來存儲自定義文檔映射(例如文件)或使用某種動態查找方案。

更新:從MATLAB R2012b開始,web'-helpbrowser'選項未公開。這可能與MATLAB版本中的GUI更改有關,其中還包括幫助瀏覽器。 web(..., '-helpbrowser')仍然按預期工作,但在未來的MATLAB版本中可能會改變。據我所知,在R2012b的幫助瀏覽器中沒有任何記錄的方式來打開任何 HTML頁面。

+0

這會讓我感覺有點髒,像這樣的文檔命令,但作爲一個黑客它看起來可能工作。當然,如果我有這樣的多個軟件包,並且它們都需要自己的doc命令,它會變得更加複雜。不過,我要接受,因爲它離我很久以前的解決方案最接近。謝謝。 –

+0

@SamRoberts:很高興喜歡它。毫無疑問,這是一種黑客行爲,將其用於多個獨立項目將導致麻煩。我們遇到了同樣的問題,並決定用另一個名稱來運送我們自己的'doc''命令,而不是映射''doc''。缺點是用戶必須記住要使用的命令。 –