MATLAB:强制doc命令打开指定的引用HTML页面

时间:2012-05-02 08:23:48

标签: matlab

假设我在一个名为mypackage.myclass的包中编写了一个类。我已经为包和类编写了自己的HTML文档,并将其包含在MATLAB帮助浏览器中,如the MATLAB documentation中所述。

我可以使用帮助浏览器直接导航到此HTML文档,但键入doc mypackage.myclass不会显示它;相反,它会显示一些由helpwin自动生成的HTML文档(这是一个不错的功能,但不是我想要的 - 自动生成的文档对我的用户来说太技术了。)

如何强制doc显示我的文档,而不是自动生成的文档?

等效地:

运行doc docTopic时,在doc命令中调用Java类com.mathworks.mlservices.MLHelpServices.showReferencePage(docTopic)。如果存在docTopic的参考页面,则会显示该页面并返回成功值。如果参考页面不存在,则返回失败值,然后调用helpwin(docTopic)。某处必须有一些目录将docTopic的值与各个参考HTML文件相关联。我如何摆弄该目录 - 或者我可以为我的包创建一个?

MathWorkers和@Yair,请给我足够的无证绳索让自己挂起:)

1 个答案:

答案 0 :(得分:3)

据我所知,这是不可能的,也不是MathWorks的意图。我也不知道这样做的无证方式。据我所知,doc的关键字在某处是硬编码的。

根据您的设置,您可以尝试以下操作:准备您自己的doc命令,该命令使用web(..., '-helpbrowser')在MATLAB的帮助浏览器中显示HTML页面:

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),那么将调用它而不是内置的{{1 }}

当然,您可以使用其他地方来存储自定义文档映射(例如文件)或使用某种动态查找方案。

更新:自MATLAB R2012b起,doc的{​​{1}}选项未记录。这可能与MATLAB版本中的GUI更改有关,其中还包括帮助浏览器。 '-helpbrowser'仍然按预期工作,但在将来的MATLAB版本中可能会有所改变。据我所知,没有记录在R2012b的帮助浏览器中打开任何 HTML页面的方法。